diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/.gitignore" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/.gitignore" new file mode 100644 index 00000000..2acb0de8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/.gitignore" @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../../../:\Users\Andox\Desktop\pet_recognition\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/inspectionProfiles/Project_Default.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/inspectionProfiles/Project_Default.xml" new file mode 100644 index 00000000..fed7a5d0 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/inspectionProfiles/Project_Default.xml" @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/inspectionProfiles/profiles_settings.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/inspectionProfiles/profiles_settings.xml" new file mode 100644 index 00000000..105ce2da --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/inspectionProfiles/profiles_settings.xml" @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/misc.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/misc.xml" new file mode 100644 index 00000000..d1e22ecb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/misc.xml" @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/modules.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/modules.xml" new file mode 100644 index 00000000..ee1accfe --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/modules.xml" @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/pet_recognition.iml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/pet_recognition.iml" new file mode 100644 index 00000000..4a58d545 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/.idea/pet_recognition.iml" @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162253573.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162253573.png" new file mode 100644 index 00000000..7bfe1fec Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162253573.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162401819.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162401819.png" new file mode 100644 index 00000000..07858f12 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162401819.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980-1600246273279.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980-1600246273279.png" new file mode 100644 index 00000000..239253a0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980-1600246273279.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980-1600246332541.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980-1600246332541.png" new file mode 100644 index 00000000..239253a0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980-1600246332541.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980.png" new file mode 100644 index 00000000..239253a0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/image-20200916162423980.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_164947-1600246321788.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_164947-1600246321788.png" new file mode 100644 index 00000000..264d40de Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_164947-1600246321788.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_164947.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_164947.png" new file mode 100644 index 00000000..264d40de Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_164947.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_165005-1600246308546.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_165005-1600246308546.png" new file mode 100644 index 00000000..ad3a1149 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_165005-1600246308546.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_165005.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_165005.png" new file mode 100644 index 00000000..ad3a1149 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.assets/snipaste20200916_165005.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.md" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.md" new file mode 100644 index 00000000..ff814255 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/README/README.md" @@ -0,0 +1,37 @@ +# 团队简介: + +团队名:元组 + +团队成员均为传智专修学院在校学生,基础编程能力扎实,团队协同一心,有着高效的问题解决能力,对工智能,机器学习有相应的理解与编码能力。 + +联系方式: + +电话:杨:15779506628 廖:15008167363 + +邮箱:avenir157@163.com + + + + + +# 项目介绍: + +本项目是一个猫脸识别的案例,通过已经训练好的模型检测已存在的猫咪图片,用卷积神经网络做对图片做回归算法,提其特征,获取猫脸的花纹的主要关键点,识别出是哪一只猫,本模型可以用于走失小猫的检测与寻找。 + + + +# 项目截图: + +### 项目截图1 + + + +![snipaste20200916_164947](snipaste20200916_165005.png) + +### 项目截图2 + +### ![snipaste20200916_164947](README.assets/snipaste20200916_164947-1600246321788.png) + +项目截图3 + +![image-20200916162423980](README.assets/image-20200916162423980-1600246332541.png) \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/._pet_recognition" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/._pet_recognition" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/._pet_recognition" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.DS_Store" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.DS_Store" new file mode 100644 index 00000000..a5b28df1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.DS_Store" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.gitignore" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.gitignore" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.gitignore" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.ipynb_checkpoints" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.ipynb_checkpoints" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._.ipynb_checkpoints" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._DARK" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._DARK" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._DARK" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._Dockerfile" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._Dockerfile" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._Dockerfile" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._bin_can" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._bin_can" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._bin_can" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._cat_yolo_detect_recog.ipynb" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._cat_yolo_detect_recog.ipynb" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._cat_yolo_detect_recog.ipynb" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._models" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._models" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._models" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._recog.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._recog.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._recog.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._requirements.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._requirements.txt" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._requirements.txt" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._src" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._src" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._src" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._test_images" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._test_images" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._test_images" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._train.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._train.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/._train.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/.ipynb_checkpoints/._cat_yolo_detect_recog-checkpoint.ipynb" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/.ipynb_checkpoints/._cat_yolo_detect_recog-checkpoint.ipynb" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/.ipynb_checkpoints/._cat_yolo_detect_recog-checkpoint.ipynb" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.fuck" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.fuck" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.fuck" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.gen" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.gen" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.gen" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.gpl" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.gpl" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.gpl" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.meta" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.meta" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.meta" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.mit" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.mit" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.mit" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.v1" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.v1" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._LICENSE.v1" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._Makefile" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._Makefile" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._Makefile" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._README.md" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._README.md" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._README.md" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._dummy" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._dummy" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._dummy" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._examples" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._examples" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._examples" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._include" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._include" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._include" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._order" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._order" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._order" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._python" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._python" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._python" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._scripts" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._scripts" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._scripts" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._src" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._src" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/._src" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._alexnet.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._alexnet.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._alexnet.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cat-dog-obj.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cat-dog-obj.data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cat-dog-obj.data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cat-dog-yolov3-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cat-dog-yolov3-tiny.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cat-dog-yolov3-tiny.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cifar.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cifar.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cifar.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cifar.test.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cifar.test.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._cifar.test.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._coco.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._coco.data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._coco.data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._combine9k.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._combine9k.data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._combine9k.data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet19.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet19.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet19.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet19_448.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet19_448.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet19_448.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet53.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet53.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet53.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet53_448.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet53_448.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet53_448.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet9000.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet9000.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._darknet9000.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._densenet201.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._densenet201.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._densenet201.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction.conv.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction.conv.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction.conv.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction22k.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction22k.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._extraction22k.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._go.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._go.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._go.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._go.test.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._go.test.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._go.test.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._gru.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._gru.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._gru.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet1k.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet1k.data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet1k.data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet22k.dataset" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet22k.dataset" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet22k.dataset" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet9k.hierarchy.dataset" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet9k.hierarchy.dataset" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._imagenet9k.hierarchy.dataset" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._jnet-conv.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._jnet-conv.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._jnet-conv.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._openimages.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._openimages.data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._openimages.data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet101.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet101.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet101.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet152.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet152.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet152.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet18.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet18.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet18.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet34.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet34.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet34.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet50.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet50.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnet50.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext101-32x4d.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext101-32x4d.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext101-32x4d.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext152-32x4d.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext152-32x4d.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext152-32x4d.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext50.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext50.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._resnext50.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._rnn.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._rnn.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._rnn.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._rnn.train.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._rnn.train.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._rnn.train.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._strided.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._strided.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._strided.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._t1.test.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._t1.test.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._t1.test.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._tiny.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._tiny.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._vgg-16.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._vgg-16.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._vgg-16.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._vgg-conv.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._vgg-conv.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._vgg-conv.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._voc.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._voc.data" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._voc.data" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._writing.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._writing.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._writing.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolo9000.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolo9000.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolo9000.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov1-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov1-tiny.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov1-tiny.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov1.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov1.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov1.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-tiny-voc.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-tiny-voc.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-tiny-voc.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-tiny.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-tiny.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-voc.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-voc.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2-voc.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov2.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-openimages.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-openimages.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-openimages.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-spp.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-spp.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-spp.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-tiny.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-tiny.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-voc.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-voc.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3-voc.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3.cfg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/cfg/._yolov3.cfg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.labels" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.labels" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.labels" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.names" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.names" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.tree" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.tree" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._9k.tree" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._coco.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._coco.names" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._coco.names" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._coco9k.map" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._coco9k.map" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._coco9k.map" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._dog.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._dog.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._dog.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._eagle.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._eagle.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._eagle.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._giraffe.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._giraffe.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._giraffe.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._goal.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._goal.txt" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._goal.txt" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._horses.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._horses.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._horses.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._imagenet.labels.list" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._imagenet.labels.list" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._imagenet.labels.list" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._imagenet.shortnames.list" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._imagenet.shortnames.list" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._imagenet.shortnames.list" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._inet9k.map" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._inet9k.map" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._inet9k.map" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._kite.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._kite.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._kite.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._labels" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._labels" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._labels" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._openimages.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._openimages.names" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._openimages.names" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._person.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._person.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._person.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._scream.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._scream.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._scream.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._voc.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._voc.names" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/._voc.names" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._100_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._101_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._102_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._103_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._104_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._105_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._106_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._107_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._108_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._109_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._110_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._111_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._112_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._113_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._114_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._115_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._116_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._117_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._118_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._119_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._120_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._121_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._122_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._123_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._124_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._125_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._126_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._32_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._33_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._34_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._35_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._36_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._37_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._38_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._39_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._40_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._41_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._42_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._43_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._44_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._45_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._46_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._47_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._48_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._49_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._50_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._51_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._52_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._53_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._54_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._55_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._56_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._57_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._58_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._59_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._60_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._61_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._62_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._63_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._64_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._65_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._66_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._67_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._68_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._69_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._70_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._71_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._72_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._73_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._74_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._75_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._76_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._77_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._78_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._79_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._80_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._81_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._82_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._83_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._84_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._85_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._86_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._87_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._88_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._89_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._90_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._91_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._92_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._93_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._94_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._95_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._96_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._97_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._98_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_0.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_1.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_2.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_3.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_4.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_5.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_6.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_7.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._99_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._make_labels.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._make_labels.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/data/labels/._make_labels.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/dummy/._m.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/dummy/._m.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/dummy/._m.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._art.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._art.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._art.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._attention.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._attention.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._attention.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._captcha.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._captcha.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._captcha.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._cifar.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._cifar.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._cifar.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._classifier.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._classifier.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._classifier.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._coco.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._coco.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._coco.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._darknet.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._darknet.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._darknet.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector-scipy-opencv.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector-scipy-opencv.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector-scipy-opencv.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._detector.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._dice.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._dice.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._dice.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._go.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._go.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._go.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._instance-segmenter.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._instance-segmenter.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._instance-segmenter.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._lsd.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._lsd.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._lsd.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._nightmare.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._nightmare.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._nightmare.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._regressor.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._regressor.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._regressor.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._rnn.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._rnn.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._rnn.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._rnn_vid.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._rnn_vid.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._rnn_vid.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._segmenter.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._segmenter.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._segmenter.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._super.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._super.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._super.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._swag.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._swag.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._swag.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._tag.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._tag.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._tag.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._voxel.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._voxel.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._voxel.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._writing.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._writing.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._writing.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._yolo.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._yolo.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/examples/._yolo.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/include/._darknet.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/include/._darknet.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/include/._darknet.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-obj.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-obj.names" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-obj.names" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-test.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-test.txt" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-test.txt" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-train.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-train.txt" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/order/._cat-dog-train.txt" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/.___pycache__" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/.___pycache__" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/.___pycache__" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._darknet.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._darknet.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._darknet.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._libdarknet.so" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._libdarknet.so" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._libdarknet.so" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._proverbot.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._proverbot.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/._proverbot.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/__pycache__/._darknet.cpython-36.pyc" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/__pycache__/._darknet.cpython-36.pyc" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/__pycache__/._darknet.cpython-36.pyc" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/__pycache__/._darknet.cpython-37.pyc" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/__pycache__/._darknet.cpython-37.pyc" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/python/__pycache__/._darknet.cpython-37.pyc" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._dice_label.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._dice_label.sh" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._dice_label.sh" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._gen_tactic.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._gen_tactic.sh" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._gen_tactic.sh" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._get_coco_dataset.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._get_coco_dataset.sh" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._get_coco_dataset.sh" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._imagenet_label.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._imagenet_label.sh" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._imagenet_label.sh" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._voc_label.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._voc_label.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/scripts/._voc_label.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activation_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activations.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activations.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activations.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activations.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activations.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._activations.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._avgpool_layer_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._batchnorm_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._batchnorm_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._batchnorm_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._batchnorm_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._batchnorm_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._batchnorm_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._blas_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._box.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._box.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._box.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._box.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._box.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._box.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._classifier.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._classifier.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._classifier.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._col2im_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._compare.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._compare.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._compare.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._connected_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._connected_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._connected_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._connected_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._connected_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._connected_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._convolutional_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cost_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cost_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cost_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cost_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cost_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cost_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crnn_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crnn_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crnn_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crnn_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crnn_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crnn_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._crop_layer_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cuda.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cuda.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cuda.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cuda.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cuda.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._cuda.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._data.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._data.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._data.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._data.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._data.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._data.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._deconvolutional_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._demo.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._demo.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._demo.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._demo.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._demo.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._demo.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._detection_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._detection_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._detection_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._detection_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._detection_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._detection_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._dropout_layer_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gemm.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gemm.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gemm.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gemm.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gemm.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gemm.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gru_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gru_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gru_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gru_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gru_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._gru_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._im2col_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image_opencv.cpp" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image_opencv.cpp" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._image_opencv.cpp" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._iseg_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._iseg_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._iseg_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._iseg_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._iseg_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._iseg_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._l2norm_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._l2norm_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._l2norm_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._l2norm_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._l2norm_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._l2norm_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._list.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._list.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._list.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._list.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._list.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._list.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._local_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._local_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._local_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._local_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._local_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._local_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._logistic_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._logistic_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._logistic_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._logistic_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._logistic_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._logistic_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._lstm_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._lstm_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._lstm_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._lstm_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._lstm_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._lstm_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._matrix.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._matrix.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._matrix.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._matrix.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._matrix.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._matrix.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer_kernels.cu" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._maxpool_layer_kernels.cu" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._network.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._network.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._network.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._network.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._network.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._network.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._normalization_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._normalization_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._normalization_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._normalization_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._normalization_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._normalization_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._option_list.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._option_list.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._option_list.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._option_list.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._option_list.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._option_list.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._parser.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._parser.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._parser.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._parser.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._parser.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._parser.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._region_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._region_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._region_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._region_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._region_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._region_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._reorg_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._reorg_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._reorg_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._reorg_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._reorg_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._reorg_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._rnn_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._rnn_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._rnn_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._rnn_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._rnn_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._rnn_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._route_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._route_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._route_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._route_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._route_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._route_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._shortcut_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._shortcut_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._shortcut_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._shortcut_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._shortcut_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._shortcut_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._softmax_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._softmax_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._softmax_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._softmax_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._softmax_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._softmax_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._stb_image.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._stb_image.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._stb_image.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._stb_image_write.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._stb_image_write.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._stb_image_write.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._tree.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._tree.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._tree.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._tree.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._tree.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._tree.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._upsample_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._upsample_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._upsample_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._upsample_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._upsample_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._upsample_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._utils.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._utils.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._utils.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._utils.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._utils.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._utils.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._yolo_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._yolo_layer.c" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._yolo_layer.c" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._yolo_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._yolo_layer.h" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/DARK/src/._yolo_layer.h" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/bin_can/._script.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/bin_can/._script.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/bin_can/._script.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/models/._standard.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/models/._standard.xml" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/models/._standard.xml" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/.___init__.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/.___init__.py" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/.___init__.py" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/.___pycache__" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/.___pycache__" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/.___pycache__" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/__pycache__/.___init__.cpython-36.pyc" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/__pycache__/.___init__.cpython-36.pyc" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/src/__pycache__/.___init__.cpython-36.pyc" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/test_images/._cat.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/test_images/._cat.jpg" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/test_images/._cat.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/test_images/._mult_cat.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/test_images/._mult_cat.png" new file mode 100644 index 00000000..fe6c41cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/__MACOSX/pet_recognition/test_images/._mult_cat.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.DS_Store" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.DS_Store" new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.DS_Store" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.gitignore" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.gitignore" new file mode 100644 index 00000000..a81c8ee1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.gitignore" @@ -0,0 +1,138 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/.gitignore" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/.gitignore" new file mode 100644 index 00000000..f679d583 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/.gitignore" @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../../../../:\Users\Andox\Desktop\pet_recognition\pet_recognition\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/inspectionProfiles/Project_Default.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/inspectionProfiles/Project_Default.xml" new file mode 100644 index 00000000..fed7a5d0 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/inspectionProfiles/Project_Default.xml" @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/inspectionProfiles/profiles_settings.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/inspectionProfiles/profiles_settings.xml" new file mode 100644 index 00000000..105ce2da --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/inspectionProfiles/profiles_settings.xml" @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/misc.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/misc.xml" new file mode 100644 index 00000000..d1e22ecb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/misc.xml" @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/modules.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/modules.xml" new file mode 100644 index 00000000..ee1accfe --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/modules.xml" @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/pet_recognition.iml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/pet_recognition.iml" new file mode 100644 index 00000000..4a58d545 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/pet_recognition.iml" @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/vcs.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/vcs.xml" new file mode 100644 index 00000000..c2365ab1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/.idea/vcs.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE" new file mode 100644 index 00000000..a50f7d70 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE" @@ -0,0 +1,12 @@ + YOLO LICENSE + Version 2, July 29 2016 + +THIS SOFTWARE LICENSE IS PROVIDED "ALL CAPS" SO THAT YOU KNOW IT IS SUPER +SERIOUS AND YOU DON'T MESS AROUND WITH COPYRIGHT LAW BECAUSE YOU WILL GET IN +TROUBLE HERE ARE SOME OTHER BUZZWORDS COMMONLY IN THESE THINGS WARRANTIES +LIABILITY CONTRACT TORT LIABLE CLAIMS RESTRICTION MERCHANTABILITY. NOW HERE'S +THE REAL LICENSE: + +0. Darknet is public domain. +1. Do whatever you want with it. +2. Stop emailing me about it! diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.fuck" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.fuck" new file mode 100644 index 00000000..8b1a9d81 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.fuck" @@ -0,0 +1,13 @@ + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + +Copyright (C) 2004 Sam Hocevar + +Everyone is permitted to copy and distribute verbatim or modified +copies of this license document, and changing it is allowed as long +as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.gen" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.gen" new file mode 100644 index 00000000..c5411327 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.gen" @@ -0,0 +1,91 @@ +RNN LICENSE Version 3, June 21 2017 + +Copyright (c) 1990, 1989, 1999 Free87337 May 48 THIRD PARTIES OR ANY OTHER THE +COMPLAIN OR CONSEQUENTIAL DAMAGES AND REGARDLESS OF WHETHER IN CONTRACT, TO THE +EXTENT REPAIR OR AGENTS (NOT THE IN ANY EVENT). THE SOFTWARE WILL BE +UNINTERRUPTED OR ERROR-FREE OR ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF ALL THE WORK (GOVERNED CODE) HIM RESPONSES, OR OF FINES, +SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR ANY OTHER OR OTHER HARL UNDER NO +CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), +PATENT PERMITTED BY THE INSTAGRAM PARENT STATE OR TORT (INCLUDING NEGLIGENCE), +PRODUCT LIABILITY OR OTHERWISE, ARISING OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR ANYTHING PROVIDED IN THIS PRODUCT, COMMIS AND SERVICES +ARE LICENSED SOFTWARE AND ANY RESULE OR ANY OTHER THE COPYRIGHT HOLDERS BE +LIABLE FOR ANY SPECIAL, INCIDENTAL, CASE, SUCH WARRANTIES, EXPRESS OR IMPLIED, +INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COPYRIGHT HOLDERS AND/OR ANY +PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY +EXPRESS OR DISTRIBUTE THAT ALL CLAIMS ARE SHALL CREATE DERAVE BE LIABLE TO YOU +WILL HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +6\. TERMINATION. TO THE EXTENT PERMITTED BY LAW, NO USE OF THE COVERED CODE IS +WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE +INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY +SERVICING, REPAIR OR COULT OR IN ANY WAY OUT OF THE USE OF THE WEBSITES OR +SERVICE WILL BE CONSEQUENTIAL DAMAGES OF ANY KIND HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + +This paragraph Agreement constitutes the entire agreement between the parties +with respect to the Work licensed here. However, if you place the name of the +fact that the arbitration was the consultation of the parties as a "patent is". +Subject to the terms and conditions of this License, Contributor has knowledge +that a license under a third party may also be used to endorse or promote +products derived from the Work, and there is no warranty on the Software and +Science Fees. For the purposes of this Agreement, attach the following +disclaimers (without liabilities of written notice to the Subject Software) in a +manner that a product is under common control with you. The Free Software +Foundation may publish revised and/or new versions of the License for the +Modifications made by the applicable terms. The Recipient shall promptly retain +the covered works for any reason be entered in any federal or state or login +Restricted Laws appearing in the United States or any of its own information +that is not disabled from a derivative work except as expressly permitted in +this License, to the extent that they are in receiving the Software and Source +Code or any exercise of the rights granted to You by this License or a +Contributor made by the Licensor or are authorized to make a reasonable +retirement by the courts of the courts located in Santa Clara County, California +printed and related to the Work or “Company” and Apache Software Foundation. If +the Licensor shall be entitled to reflect your rights to use the Software and +the Software to exercise the rights granted to the recipient without a +requirement to exercise the rights granted by the Agreement to the provision +will begin will appear in such cases, you will use such information without such +corporation shall be an officer with respect to any part of the Software or any +portion thereof. Capitalized terms are included in the Initial Contributor and +under no circumstances will license the Service at any time and for any direct, +indirect, special, incidental, or consequential damages of or assist in +connection with any Services or the registration purposes only to the extent +that it includes any or all means including the processing of which you download +any derivative work. Any of the purchases’ transmission purposes are made +available, if any, in other circumstances, we may review the copyright notice. +In the event that this Agreement is required to give us strict content. The +inclusion of the other party hereunder may also notify you Intellectual Property +Rights to any third party. This means that the Source Code exists of the Work +will not charge a program available to you at any time. You must include a +prominent statement that the Software is governed under a particular version of +this Agreement. You must include a provision to the extent that there is no +warranty for the content of others. You agree that the Recipient was appointed +as a Contributor, (c) are effective until terminated by hereunder, then the +registration are not disabled and not limited to, submit any Customer Data +without the updated use of the Software and that no fee is released. You grant +to Use Other Arbitration Rules for Diagnostic or Services may use or modify the +Apple Software and Consolidated Apple Software or Services. The Company may have +full risk as a product of the Compatible Source. A Contribution by the Licensor +or by the updated Software under the following conditions we can redistribute +any General Provision of this Agreement. If the Program is used in accordance +with the terms of this Agreement, Customer may provide advertisements from your +devices that clause you can your employer or a transaction or country that has +been controlled by the arbitrator, that they will be useful of this Agreement. +The term "Open Source Software is available in connection with the program, and +you may not protect the combination of the Covered Code. You should like to +select a user's rights to charge a copy of this License. I are Contributor's +confidentiality of the exercise of the rights granted herein. Such a covered +work is released as a consequence, the Licensor shall be eligible for a purpose +or subcontractor of the person or entity to the user of the user, then the word +"Application" means having the original fee for any reason; and that no patent +license to more than fifty stated close of the license term. The terms of this +License will the license terms and conditions set forth in Section 2.2 (OPEC) +and You will not use the Software or any set of responsibility for any resulting +information that the Original Code warrants that you have the right to disclose +these information (or in the notification; or (iii) late use of the software or +any third party to the three (50) days before such belief to the extent that it +includes a court court obtains the rights granted by this License. diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.gpl" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.gpl" new file mode 100644 index 00000000..9cecc1d4 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.gpl" @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.meta" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.meta" new file mode 100644 index 00000000..6728bd28 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.meta" @@ -0,0 +1,8 @@ + META-LICENSE + Version 1, June 21 2017 + +Any and all licenses may be applied to the software either individually +or in concert. Any issues, ambiguities, paradoxes, or metaphysical quandries +arising from this combination should be discussed with a local faith leader, +hermit, or guru. The Oxford comma shall be used. + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.mit" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.mit" new file mode 100644 index 00000000..5bd806ce --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.mit" @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2017 Joseph Redmon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.v1" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.v1" new file mode 100644 index 00000000..5b8709ac --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/LICENSE.v1" @@ -0,0 +1,13 @@ + YOLO LICENSE + Version 1, July 10 2015 + +THIS SOFTWARE LICENSE IS PROVIDED "ALL CAPS" SO THAT YOU KNOW IT IS SUPER +SERIOUS AND YOU DON'T MESS AROUND WITH COPYRIGHT LAW BECAUSE YOU WILL GET IN +TROUBLE HERE ARE SOME OTHER BUZZWORDS COMMONLY IN THESE THINGS WARRANTIES +LIABILITY CONTRACT TORT LIABLE CLAIMS RESTRICTION MERCHANTABILITY SUBJECT TO +THE FOLLOWING CONDITIONS: + +1. #yolo +2. #swag +3. #blazeit + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/Makefile" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/Makefile" new file mode 100644 index 00000000..63e15e65 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/Makefile" @@ -0,0 +1,105 @@ +GPU=0 +CUDNN=0 +OPENCV=0 +OPENMP=0 +DEBUG=0 + +ARCH= -gencode arch=compute_30,code=sm_30 \ + -gencode arch=compute_35,code=sm_35 \ + -gencode arch=compute_50,code=[sm_50,compute_50] \ + -gencode arch=compute_52,code=[sm_52,compute_52] +# -gencode arch=compute_20,code=[sm_20,sm_21] \ This one is deprecated? + +# This is what I use, uncomment if you know your arch and want to specify +# ARCH= -gencode arch=compute_52,code=compute_52 + +VPATH=./src/:./examples +SLIB=libdarknet.so +ALIB=libdarknet.a +EXEC=darknet +OBJDIR=./obj/ + +CC=gcc +CPP=g++ +NVCC=nvcc +AR=ar +ARFLAGS=rcs +OPTS=-Ofast +LDFLAGS= -lm -pthread +COMMON= -Iinclude/ -Isrc/ +CFLAGS=-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC + +ifeq ($(OPENMP), 1) +CFLAGS+= -fopenmp +endif + +ifeq ($(DEBUG), 1) +OPTS=-O0 -g +endif + +CFLAGS+=$(OPTS) + +ifeq ($(OPENCV), 1) +COMMON+= -DOPENCV +CFLAGS+= -DOPENCV +LDFLAGS+= `pkg-config --libs opencv` -lstdc++ +COMMON+= `pkg-config --cflags opencv` +endif + +ifeq ($(GPU), 1) +COMMON+= -DGPU -I/usr/local/cuda/include/ +CFLAGS+= -DGPU +LDFLAGS+= -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand +endif + +ifeq ($(CUDNN), 1) +COMMON+= -DCUDNN +CFLAGS+= -DCUDNN +LDFLAGS+= -lcudnn +endif + +OBJ=gemm.o utils.o cuda.o deconvolutional_layer.o convolutional_layer.o list.o image.o activations.o im2col.o col2im.o blas.o crop_layer.o dropout_layer.o maxpool_layer.o softmax_layer.o data.o matrix.o network.o connected_layer.o cost_layer.o parser.o option_list.o detection_layer.o route_layer.o upsample_layer.o box.o normalization_layer.o avgpool_layer.o layer.o local_layer.o shortcut_layer.o logistic_layer.o activation_layer.o rnn_layer.o gru_layer.o crnn_layer.o demo.o batchnorm_layer.o region_layer.o reorg_layer.o tree.o lstm_layer.o l2norm_layer.o yolo_layer.o iseg_layer.o image_opencv.o +EXECOBJA=captcha.o lsd.o super.o art.o tag.o cifar.o go.o rnn.o segmenter.o regressor.o classifier.o coco.o yolo.o detector.o nightmare.o instance-segmenter.o darknet.o +ifeq ($(GPU), 1) +LDFLAGS+= -lstdc++ +OBJ+=convolutional_kernels.o deconvolutional_kernels.o activation_kernels.o im2col_kernels.o col2im_kernels.o blas_kernels.o crop_layer_kernels.o dropout_layer_kernels.o maxpool_layer_kernels.o avgpool_layer_kernels.o +endif + +EXECOBJ = $(addprefix $(OBJDIR), $(EXECOBJA)) +OBJS = $(addprefix $(OBJDIR), $(OBJ)) +DEPS = $(wildcard src/*.h) Makefile include/darknet.h + +all: obj backup results $(SLIB) $(ALIB) $(EXEC) +#all: obj results $(SLIB) $(ALIB) $(EXEC) + + +$(EXEC): $(EXECOBJ) $(ALIB) + $(CC) $(COMMON) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(ALIB) + +$(ALIB): $(OBJS) + $(AR) $(ARFLAGS) $@ $^ + +$(SLIB): $(OBJS) + $(CC) $(CFLAGS) -shared $^ -o $@ $(LDFLAGS) + +$(OBJDIR)%.o: %.cpp $(DEPS) + $(CPP) $(COMMON) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)%.o: %.c $(DEPS) + $(CC) $(COMMON) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)%.o: %.cu $(DEPS) + $(NVCC) $(ARCH) $(COMMON) --compiler-options "$(CFLAGS)" -c $< -o $@ + +obj: + mkdir -p obj +backup: + mkdir -p backup +results: + mkdir -p results + +.PHONY: clean + +clean: + rm -rf $(OBJS) $(SLIB) $(ALIB) $(EXEC) $(EXECOBJ) $(OBJDIR)/* + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/README.md" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/README.md" new file mode 100644 index 00000000..b0e028e4 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/README.md" @@ -0,0 +1,14 @@ +![Darknet Logo](http://pjreddie.com/media/files/darknet-black-small.png) + +# Darknet # +Darknet is an open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation. + +Yolo v4 paper: https://arxiv.org/abs/2004.10934 + +Yolo v4 source code: https://github.com/AlexeyAB/darknet + +Useful links: https://medium.com/@alexeyab84/yolov4-the-most-accurate-real-time-neural-network-on-ms-coco-dataset-73adfd3602fe?source=friends_link&sk=6039748846bbcf1d960c3061542591d7 + +For more information see the [Darknet project website](http://pjreddie.com/darknet). + +For questions or issues please use the [Google Group](https://groups.google.com/forum/#!forum/darknet). diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/alexnet.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/alexnet.cfg" new file mode 100644 index 00000000..e2ed4bb8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/alexnet.cfg" @@ -0,0 +1,96 @@ +[net] +# Training +# batch=128 +# subdivisions=1 +# Testing +batch=1 +subdivisions=1 +height=227 +width=227 +channels=3 +momentum=0.9 +decay=0.0005 +max_crop=256 + +learning_rate=0.01 +policy=poly +power=4 +max_batches=800000 + +angle=7 +hue = .1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +filters=96 +size=11 +stride=4 +pad=0 +activation=relu + +[maxpool] +size=3 +stride=2 +padding=0 + +[convolutional] +filters=256 +size=5 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=3 +stride=2 +padding=0 + +[convolutional] +filters=384 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=384 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=3 +stride=2 +padding=0 + +[connected] +output=4096 +activation=relu + +[dropout] +probability=.5 + +[connected] +output=4096 +activation=relu + +[dropout] +probability=.5 + +[connected] +output=1000 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cat-dog-obj.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cat-dog-obj.data" new file mode 100644 index 00000000..b38fe8e8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cat-dog-obj.data" @@ -0,0 +1,5 @@ +classes = 2 +train = DARK/order/cat-dog-train.txt +valid = DARK/order/cat-dog-test.txt +names = DARK/order/cat-dog-obj.names +backup = DARK/backup/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cat-dog-yolov3-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cat-dog-yolov3-tiny.cfg" new file mode 100644 index 00000000..445d3769 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cat-dog-yolov3-tiny.cfg" @@ -0,0 +1,182 @@ +[net] +# Testing +batch=24 +subdivisions=8 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters= 21 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=2 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters= 21 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=2 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cifar.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cifar.cfg" new file mode 100644 index 00000000..b2f69f53 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cifar.cfg" @@ -0,0 +1,121 @@ +[net] +batch=128 +subdivisions=1 +height=28 +width=28 +channels=3 +max_crop=32 +min_crop=32 + +hue=.1 +saturation=.75 +exposure=.75 + +learning_rate=0.4 +policy=poly +power=4 +max_batches = 5000 +momentum=0.9 +decay=0.0005 + + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[dropout] +probability=.5 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[dropout] +probability=.5 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[dropout] +probability=.5 + +[convolutional] +filters=10 +size=1 +stride=1 +pad=1 +activation=leaky + +[avgpool] + +[softmax] +groups=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cifar.test.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cifar.test.cfg" new file mode 100644 index 00000000..18b6c54c --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/cifar.test.cfg" @@ -0,0 +1,117 @@ +[net] +batch=128 +subdivisions=1 +height=32 +width=32 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.4 +policy=poly +power=4 +max_batches = 50000 + + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[dropout] +probability=.5 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[dropout] +probability=.5 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[dropout] +probability=.5 + +[convolutional] +filters=10 +size=1 +stride=1 +pad=1 +activation=leaky + +[avgpool] + +[softmax] +groups=1 +temperature=3 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/coco.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/coco.data" new file mode 100644 index 00000000..bf6808e7 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/coco.data" @@ -0,0 +1,6 @@ +classes= 80 +train = order/cat-dog-train.txt +valid = order/cat-dog-test.txt +#valid = data/coco_val_5k.list +names = data/coco.names +backup = backup/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/combine9k.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/combine9k.data" new file mode 100644 index 00000000..06a3e76a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/combine9k.data" @@ -0,0 +1,10 @@ +classes= 9418 +#train = /home/pjreddie/data/coco/trainvalno5k.txt +train = data/combine9k.train.list +valid = /home/pjreddie/data/imagenet/det.val.files +labels = data/9k.labels +names = data/9k.names +backup = backup/ +map = data/inet9k.map +eval = imagenet +results = results diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet.cfg" new file mode 100644 index 00000000..375107f7 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet.cfg" @@ -0,0 +1,120 @@ +[net] +# Training +# batch=128 +# subdivisions=1 +# Testing +batch=1 +subdivisions=1 +height=256 +width=256 +min_crop=128 +max_crop=448 +channels=3 +momentum=0.9 +decay=0.0005 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet19.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet19.cfg" new file mode 100644 index 00000000..28ac9669 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet19.cfg" @@ -0,0 +1,205 @@ +[net] +# Training +#batch=128 +#subdivisions=2 + +# Testing + batch=1 + subdivisions=1 + +height=256 +width=256 +min_crop=128 +max_crop=448 +channels=3 +momentum=0.9 +decay=0.0005 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet19_448.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet19_448.cfg" new file mode 100644 index 00000000..c6df7306 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet19_448.cfg" @@ -0,0 +1,197 @@ +[net] +batch=128 +subdivisions=4 +height=448 +width=448 +max_crop=512 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.001 +policy=poly +power=4 +max_batches=100000 + +angle=7 +hue = .1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet53.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet53.cfg" new file mode 100644 index 00000000..7b6d5766 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet53.cfg" @@ -0,0 +1,566 @@ +[net] +# Training +# batch=128 +# subdivisions=4 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet53_448.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet53_448.cfg" new file mode 100644 index 00000000..dedab1b9 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet53_448.cfg" @@ -0,0 +1,559 @@ +[net] +# Training - start training with darknet53.weights +# batch=128 +# subdivisions=8 + +# Testing +batch=1 +subdivisions=1 + +height=448 +width=448 +channels=3 +min_crop=448 +max_crop=512 + +learning_rate=0.001 +policy=poly +power=4 +max_batches=100000 +momentum=0.9 +decay=0.0005 + + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet9000.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet9000.cfg" new file mode 100644 index 00000000..9dd2dfbb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/darknet9000.cfg" @@ -0,0 +1,205 @@ +[net] +# Training +# batch=128 +# subdivisions=4 +# Testing +batch = 1 +subdivisions = 1 +height=448 +width=448 +max_crop=512 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.001 +policy=poly +power=4 +max_batches=100000 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=9418 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 +tree=data/9k.tree + +[cost] +type=masked + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/densenet201.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/densenet201.cfg" new file mode 100644 index 00000000..65b4aecc --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/densenet201.cfg" @@ -0,0 +1,1951 @@ +[net] +# Training +# batch=128 +# subdivisions=4 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +max_crop=448 +channels=3 +momentum=0.9 +decay=0.0005 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=1600000 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1,-3 + + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction.cfg" new file mode 100644 index 00000000..66cb15f8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction.cfg" @@ -0,0 +1,209 @@ +[net] +# Training +# batch=128 +# subdivisions=4 + +# Testing +batch=1 +subdivisions=1 + +height=224 +width=224 +max_crop=320 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.1 +policy=poly +power=4 +max_batches=1600000 + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=192 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=leaky + +[avgpool] + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction.conv.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction.conv.cfg" new file mode 100644 index 00000000..2a7d09ec --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction.conv.cfg" @@ -0,0 +1,179 @@ +[net] +batch=1 +subdivisions=1 +height=256 +width=256 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.5 +policy=poly +power=6 +max_batches=500000 + +[convolutional] +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=192 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[avgpool] + +[connected] +output=1000 +activation=leaky + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction22k.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction22k.cfg" new file mode 100644 index 00000000..b5f54090 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/extraction22k.cfg" @@ -0,0 +1,206 @@ +[net] +batch=128 +subdivisions=1 +height=224 +width=224 +max_crop=320 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.01 +max_batches = 0 +policy=steps +steps=444000,590000,970000 +scales=.5,.2,.1 + +#policy=sigmoid +#gamma=.00008 +#step=100000 +#max_batches=200000 + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=192 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=3 +stride=1 +pad=1 +activation=leaky + +[avgpool] + +[connected] +output=21842 +activation=leaky + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/go.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/go.cfg" new file mode 100644 index 00000000..c730092f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/go.cfg" @@ -0,0 +1,132 @@ +[net] +batch=512 +subdivisions=1 +height=19 +width=19 +channels=1 +momentum=0.9 +decay=0.0005 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=10000000 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=1 +size=1 +stride=1 +pad=1 +activation=linear + +[reorg] +extra=1 +stride=1 + +[softmax] + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/go.test.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/go.test.cfg" new file mode 100644 index 00000000..1e4e4380 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/go.test.cfg" @@ -0,0 +1,132 @@ +[net] +batch=1 +subdivisions=1 +height=19 +width=19 +channels=1 +momentum=0.9 +decay=0.0005 + +learning_rate=0.01 +policy=poly +power=4 +max_batches=100000 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu +batch_normalize=1 + +[convolutional] +filters=1 +size=1 +stride=1 +pad=1 +activation=linear + +[reorg] +extra=1 +stride=1 + +[softmax] + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/gru.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/gru.cfg" new file mode 100644 index 00000000..60642212 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/gru.cfg" @@ -0,0 +1,29 @@ +[net] +inputs=256 +momentum=0.9 +decay=0.0 +subdivisions=1 +batch = 1 +time_steps=1 +learning_rate=.002 +adam=1 + +policy=constant +power=4 +max_batches=1000000 + +[gru] +output = 256 + +[gru] +output = 256 + +[gru] +output = 256 + +[connected] +output=256 +activation=linear + +[softmax] + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet1k.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet1k.data" new file mode 100644 index 00000000..6634a274 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet1k.data" @@ -0,0 +1,8 @@ +classes=1000 +train = /data/imagenet/imagenet1k.train.list +valid = /data/imagenet/imagenet1k.valid.list +backup = /home/pjreddie/backup/ +labels = data/imagenet.labels.list +names = data/imagenet.shortnames.list +top=5 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet22k.dataset" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet22k.dataset" new file mode 100644 index 00000000..e25ef007 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet22k.dataset" @@ -0,0 +1,9 @@ +classes=21842 +train = /data/imagenet/imagenet22k.train.list +valid = /data/imagenet/imagenet22k.valid.list +#valid = /data/imagenet/imagenet1k.valid.list +backup = /home/pjreddie/backup/ +labels = data/imagenet.labels.list +names = data/imagenet.shortnames.list +top = 5 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet9k.hierarchy.dataset" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet9k.hierarchy.dataset" new file mode 100644 index 00000000..41fb71b0 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/imagenet9k.hierarchy.dataset" @@ -0,0 +1,9 @@ +classes=9418 +train = data/9k.train.list +valid = /data/imagenet/imagenet1k.valid.list +leaves = data/imagenet1k.labels +backup = /home/pjreddie/backup/ +labels = data/9k.labels +names = data/9k.names +top=5 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/jnet-conv.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/jnet-conv.cfg" new file mode 100644 index 00000000..056f82aa --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/jnet-conv.cfg" @@ -0,0 +1,118 @@ +[net] +batch=1 +subdivisions=1 +height=10 +width=10 +channels=3 +learning_rate=0.01 +momentum=0.9 +decay=0.0005 + +[convolutional] +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +stride=2 +size=2 + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +stride=2 +size=2 + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +stride=2 +size=2 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +stride=2 +size=2 + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +stride=2 +size=2 + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/openimages.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/openimages.data" new file mode 100644 index 00000000..fa80e5ab --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/openimages.data" @@ -0,0 +1,8 @@ +classes= 601 +train = /home/pjreddie/data/openimsv4/openimages.train.list +#valid = coco_testdev +valid = data/coco_val_5k.list +names = data/openimages.names +backup = /home/pjreddie/backup/ +eval=coco + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet101.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet101.cfg" new file mode 100644 index 00000000..de458820 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet101.cfg" @@ -0,0 +1,990 @@ +[net] +# Training +# batch=128 +# subdivisions=2 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +# Conv 4 +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +#Conv 5 +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + + + + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 + +[cost] +type=sse + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet152.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet152.cfg" new file mode 100644 index 00000000..e8e3297a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet152.cfg" @@ -0,0 +1,1460 @@ +[net] +# Training +# batch=128 +# subdivisions=8 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +max_crop=448 +channels=3 +momentum=0.9 +decay=0.0005 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=1600000 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +# Conv 4 +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +#Conv 5 +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + + + + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet18.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet18.cfg" new file mode 100644 index 00000000..275f4bdb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet18.cfg" @@ -0,0 +1,228 @@ +[net] +# Training +# batch=128 +# subdivisions=1 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + + +# Residual Block +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Strided Residual Block +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + + +# Strided Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + + +# Strided Residual Block +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + + + + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet34.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet34.cfg" new file mode 100644 index 00000000..9f68f096 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet34.cfg" @@ -0,0 +1,392 @@ +[net] +# Training +# batch=128 +# subdivisions=2 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Strided Residual Block +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Strided Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + +# Residual Block +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=linear + +[shortcut] +activation=leaky +from=-3 + + + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet50.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet50.cfg" new file mode 100644 index 00000000..d0d7c511 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnet50.cfg" @@ -0,0 +1,510 @@ +[net] +# Training +# batch=128 +# subdivisions=4 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +# Conv 4 +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +#Conv 5 +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + + + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext101-32x4d.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext101-32x4d.cfg" new file mode 100644 index 00000000..8538ccc3 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext101-32x4d.cfg" @@ -0,0 +1,1053 @@ +[net] +# Training +# batch=128 +# subdivisions=8 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=4096 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=4096 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=4096 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext152-32x4d.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext152-32x4d.cfg" new file mode 100644 index 00000000..48279fd2 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext152-32x4d.cfg" @@ -0,0 +1,1562 @@ +[net] +# Training +# batch=128 +# subdivisions=16 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=4096 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=4096 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +groups = 32 +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=4096 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + + + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext50.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext50.cfg" new file mode 100644 index 00000000..12aebdf6 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/resnext50.cfg" @@ -0,0 +1,523 @@ +[net] +# Training +# batch=128 +# subdivisions=4 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +min_crop=128 +max_crop=448 + +burn_in=1000 +learning_rate=0.1 +policy=poly +power=4 +max_batches=800000 +momentum=0.9 +decay=0.0005 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + + + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + + +# Conv 4 +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +#Conv 5 +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +groups=32 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +[avgpool] + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[softmax] +groups=1 + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/rnn.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/rnn.cfg" new file mode 100644 index 00000000..61b202f3 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/rnn.cfg" @@ -0,0 +1,38 @@ +[net] +subdivisions=1 +inputs=256 +batch = 1 +momentum=0.9 +decay=0.001 +max_batches = 2000 +time_steps=1 +learning_rate=0.1 +policy=steps +steps=1000,1500 +scales=.1,.1 + +[rnn] +batch_normalize=1 +output = 1024 +hidden=1024 +activation=leaky + +[rnn] +batch_normalize=1 +output = 1024 +hidden=1024 +activation=leaky + +[rnn] +batch_normalize=1 +output = 1024 +hidden=1024 +activation=leaky + +[connected] +output=256 +activation=leaky + +[softmax] + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/rnn.train.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/rnn.train.cfg" new file mode 100644 index 00000000..b9748990 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/rnn.train.cfg" @@ -0,0 +1,38 @@ +[net] +subdivisions=1 +inputs=256 +batch = 128 +momentum=0.9 +decay=0.001 +max_batches = 2000 +time_steps=576 +learning_rate=0.1 +policy=steps +steps=1000,1500 +scales=.1,.1 + +[rnn] +batch_normalize=1 +output = 1024 +hidden=1024 +activation=leaky + +[rnn] +batch_normalize=1 +output = 1024 +hidden=1024 +activation=leaky + +[rnn] +batch_normalize=1 +output = 1024 +hidden=1024 +activation=leaky + +[connected] +output=256 +activation=leaky + +[softmax] + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/strided.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/strided.cfg" new file mode 100644 index 00000000..2f745085 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/strided.cfg" @@ -0,0 +1,182 @@ +[net] +batch=128 +subdivisions=4 +height=256 +width=256 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.01 +policy=steps +scales=.1,.1,.1 +steps=200000,300000,400000 +max_batches=800000 + + +[crop] +crop_height=224 +crop_width=224 +flip=1 +angle=0 +saturation=1 +exposure=1 +shift=.2 + +[convolutional] +filters=64 +size=7 +stride=2 +pad=1 +activation=ramp + +[convolutional] +filters=192 +size=3 +stride=2 +pad=1 +activation=ramp + +[convolutional] +filters=128 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=3 +stride=2 +pad=1 +activation=ramp + +[convolutional] +filters=128 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=128 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=512 +size=3 +stride=2 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=256 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=1024 +size=3 +stride=2 +pad=1 +activation=ramp + +[convolutional] +filters=512 +size=1 +stride=1 +pad=1 +activation=ramp + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=ramp + +[maxpool] +size=3 +stride=2 + +[connected] +output=4096 +activation=ramp + +[dropout] +probability=0.5 + +[connected] +output=1000 +activation=ramp + +[softmax] + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/t1.test.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/t1.test.cfg" new file mode 100644 index 00000000..b3628114 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/t1.test.cfg" @@ -0,0 +1,117 @@ +[net] +batch=1 +subdivisions=1 +height=224 +width=224 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.0005 +policy=steps +steps=200,400,600,20000,30000 +scales=2.5,2,2,.1,.1 +max_batches = 40000 + +[convolutional] +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[connected] +output= 1470 +activation=linear + +[detection] +classes=20 +coords=4 +rescore=1 +side=7 +num=2 +softmax=0 +sqrt=1 +jitter=.2 + +object_scale=1 +noobject_scale=.5 +class_scale=1 +coord_scale=5 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/tiny.cfg" new file mode 100644 index 00000000..f97327cf --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/tiny.cfg" @@ -0,0 +1,174 @@ +[net] +# Train +batch=128 +subdivisions=1 +# Test +# batch=1 +# subdivisions=1 +height=224 +width=224 +channels=3 +momentum=0.9 +decay=0.0005 +max_crop=320 + +learning_rate=0.1 +policy=poly +power=4 +max_batches=1600000 + +angle=7 +hue=.1 +saturation=.75 +exposure=.75 +aspect=.75 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=16 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=16 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1000 +size=1 +stride=1 +pad=1 +activation=linear + +[avgpool] + +[softmax] +groups=1 + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/vgg-16.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/vgg-16.cfg" new file mode 100644 index 00000000..c73b17b6 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/vgg-16.cfg" @@ -0,0 +1,157 @@ +[net] +# Training +# batch=128 +# subdivisions=4 + +# Testing +batch=1 +subdivisions=1 + +height=256 +width=256 +channels=3 +learning_rate=0.00001 +momentum=0.9 +decay=0.0005 + +[crop] +crop_height=224 +crop_width=224 +flip=1 +exposure=1 +saturation=1 +angle=0 + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[connected] +output=4096 +activation=relu + +[dropout] +probability=.5 + +[connected] +output=4096 +activation=relu + +[dropout] +probability=.5 + +[connected] +output=1000 +activation=linear + +[softmax] +groups=1 + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/vgg-conv.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/vgg-conv.cfg" new file mode 100644 index 00000000..21e1d724 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/vgg-conv.cfg" @@ -0,0 +1,121 @@ +[net] +batch=1 +subdivisions=1 +width=224 +height=224 +channels=3 +learning_rate=0.00001 +momentum=0.9 +decay=0.0005 + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=64 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=128 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=256 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[convolutional] +filters=512 +size=3 +stride=1 +pad=1 +activation=relu + +[maxpool] +size=2 +stride=2 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/voc.data" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/voc.data" new file mode 100644 index 00000000..7807b5d2 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/voc.data" @@ -0,0 +1,6 @@ +classes= 20 +train = /home/pjreddie/data/voc/train.txt +valid = /home/pjreddie/data/voc/2007_test.txt +names = data/voc.names +backup = backup + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/writing.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/writing.cfg" new file mode 100644 index 00000000..1ed899bc --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/writing.cfg" @@ -0,0 +1,41 @@ +[net] +batch=128 +subdivisions=2 +height=256 +width=256 +channels=3 +learning_rate=0.00000001 +momentum=0.9 +decay=0.0005 +seen=0 + +[convolutional] +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=1 +size=3 +stride=1 +pad=1 +activation=logistic + +[cost] + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolo9000.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolo9000.cfg" new file mode 100644 index 00000000..e745f78a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolo9000.cfg" @@ -0,0 +1,218 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=8 +batch=1 +subdivisions=1 +height=544 +width=544 +channels=3 +momentum=0.9 +decay=0.0005 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +hue=.1 +saturation=.75 +exposure=.75 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +filters=28269 +size=1 +stride=1 +pad=1 +activation=linear + +[region] +anchors = 0.77871, 1.14074, 3.00525, 4.31277, 9.22725, 9.61974 +bias_match=1 +classes=9418 +coords=4 +num=3 +softmax=1 +jitter=.2 +rescore=1 + +object_scale=5 +noobject_scale=1 +class_scale=1 +coord_scale=1 + +thresh = .6 +absolute=1 +random=1 + +tree=data/9k.tree +map = data/coco9k.map diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov1-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov1-tiny.cfg" new file mode 100644 index 00000000..a5e7b492 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov1-tiny.cfg" @@ -0,0 +1,130 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=8 +height=448 +width=448 +channels=3 +momentum=0.9 +decay=0.0005 + +saturation=.75 +exposure=.75 +hue = .1 + +learning_rate=0.0005 +policy=steps +steps=200,400,600,800,20000,30000 +scales=2.5,2,2,2,.1,.1 +max_batches = 40000 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[connected] +output= 1470 +activation=linear + +[detection] +classes=20 +coords=4 +rescore=1 +side=7 +num=2 +softmax=0 +sqrt=1 +jitter=.2 + +object_scale=1 +noobject_scale=.5 +class_scale=1 +coord_scale=5 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov1.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov1.cfg" new file mode 100644 index 00000000..06cf6e67 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov1.cfg" @@ -0,0 +1,261 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=8 +height=448 +width=448 +channels=3 +momentum=0.9 +decay=0.0005 +saturation=1.5 +exposure=1.5 +hue=.1 + +learning_rate=0.0005 +policy=steps +steps=200,400,600,20000,30000 +scales=2.5,2,2,.1,.1 +max_batches = 40000 + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=192 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +####### + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[local] +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[dropout] +probability=.5 + +[connected] +output= 1715 +activation=linear + +[detection] +classes=20 +coords=4 +rescore=1 +side=7 +num=3 +softmax=0 +sqrt=1 +jitter=.2 + +object_scale=1 +noobject_scale=.5 +class_scale=1 +coord_scale=5 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-tiny-voc.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-tiny-voc.cfg" new file mode 100644 index 00000000..c4c127cd --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-tiny-voc.cfg" @@ -0,0 +1,138 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +max_batches = 40200 +policy=steps +steps=-1,100,20000,30000 +scales=.1,10,.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=125 +activation=linear + +[region] +anchors = 1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52 +bias_match=1 +classes=20 +coords=4 +num=5 +softmax=1 +jitter=.2 +rescore=1 + +object_scale=5 +noobject_scale=1 +class_scale=1 +coord_scale=1 + +absolute=1 +thresh = .6 +random=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-tiny.cfg" new file mode 100644 index 00000000..81d0ac45 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-tiny.cfg" @@ -0,0 +1,139 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=425 +activation=linear + +[region] +anchors = 0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828 +bias_match=1 +classes=80 +coords=4 +num=5 +softmax=1 +jitter=.2 +rescore=0 + +object_scale=5 +noobject_scale=1 +class_scale=1 +coord_scale=1 + +absolute=1 +thresh = .6 +random=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-voc.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-voc.cfg" new file mode 100644 index 00000000..dbf2de28 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2-voc.cfg" @@ -0,0 +1,258 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=8 +height=416 +width=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 80200 +policy=steps +steps=40000,60000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + + +####### + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[route] +layers=-9 + +[convolutional] +batch_normalize=1 +size=1 +stride=1 +pad=1 +filters=64 +activation=leaky + +[reorg] +stride=2 + +[route] +layers=-1,-4 + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=125 +activation=linear + + +[region] +anchors = 1.3221, 1.73145, 3.19275, 4.00944, 5.05587, 8.09892, 9.47112, 4.84053, 11.2364, 10.0071 +bias_match=1 +classes=20 +coords=4 +num=5 +softmax=1 +jitter=.3 +rescore=1 + +object_scale=5 +noobject_scale=1 +class_scale=1 +coord_scale=1 + +absolute=1 +thresh = .6 +random=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2.cfg" new file mode 100644 index 00000000..088edf81 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov2.cfg" @@ -0,0 +1,258 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=8 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + + +####### + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[route] +layers=-9 + +[convolutional] +batch_normalize=1 +size=1 +stride=1 +pad=1 +filters=64 +activation=leaky + +[reorg] +stride=2 + +[route] +layers=-1,-4 + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=425 +activation=linear + + +[region] +anchors = 0.57273, 0.677385, 1.87446, 2.06253, 3.33843, 5.47434, 7.88282, 3.52778, 9.77052, 9.16828 +bias_match=1 +classes=80 +coords=4 +num=5 +softmax=1 +jitter=.3 +rescore=1 + +object_scale=5 +noobject_scale=1 +class_scale=1 +coord_scale=1 + +absolute=1 +thresh = .6 +random=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-openimages.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-openimages.cfg" new file mode 100644 index 00000000..65d241a7 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-openimages.cfg" @@ -0,0 +1,789 @@ +[net] +# Testing + batch=1 + subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=5000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=1818 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=601 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=1818 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=601 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=1818 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=601 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-spp.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-spp.cfg" new file mode 100644 index 00000000..4ad2a052 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-spp.cfg" @@ -0,0 +1,822 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-tiny.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-tiny.cfg" new file mode 100644 index 00000000..e5aad456 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-tiny.cfg" @@ -0,0 +1,182 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +#Training +batch=64 +subdivisions=8 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=80 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=80 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-voc.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-voc.cfg" new file mode 100644 index 00000000..3f3e8dfb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3-voc.cfg" @@ -0,0 +1,785 @@ +[net] +# Testing + batch=1 + subdivisions=1 +# Training +# batch=64 +# subdivisions=16 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 50200 +policy=steps +steps=40000,45000 +scales=.1,.1 + + + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=75 +activation=linear + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=20 +num=9 +jitter=.3 +ignore_thresh = .5 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=75 +activation=linear + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=20 +num=9 +jitter=.3 +ignore_thresh = .5 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=75 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=20 +num=9 +jitter=.3 +ignore_thresh = .5 +truth_thresh = 1 +random=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3.cfg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3.cfg" new file mode 100644 index 00000000..938ffff2 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/cfg/yolov3.cfg" @@ -0,0 +1,789 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.labels" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.labels" new file mode 100644 index 00000000..e2bd3082 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.labels" @@ -0,0 +1,9418 @@ +n00002452 +n00020827 +n00002684 +n11425580 +n05220461 +n09225146 +n05538625 +n01900150 +n05225602 +n05418717 +n05302499 +n05578095 +n09475179 +n09376198 +n14877585 +n15046900 +n00019613 +n00021265 +n15067877 +n09436708 +n14915184 +n07555863 +n07850329 +n07849336 +n07705711 +n07622061 +n07594066 +n07854982 +n07852833 +n07852614 +n07854184 +n07852229 +n07851443 +n07705931 +n07707451 +n07752966 +n07760859 +n07747055 +n07754684 +n07768694 +n07764847 +n07768858 +n07739125 +n07746551 +n07753113 +n07763987 +n07748574 +n07751451 +n07762244 +n07750872 +n07742704 +n07765208 +n07763792 +n07767847 +n07766173 +n07751004 +n07760153 +n07758680 +n07753592 +n07751280 +n07769731 +n07763629 +n07755411 +n07754451 +n07753275 +n07764155 +n07765073 +n07762114 +n07762913 +n07753743 +n07765999 +n07765361 +n07752377 +n07757132 +n07769584 +n07751148 +n07761141 +n07761309 +n07749731 +n07747951 +n07749446 +n07747607 +n07749582 +n07750449 +n07749969 +n07750146 +n07748157 +n07748416 +n07748276 +n07748912 +n07748753 +n07749192 +n07749312 +n07739344 +n07739506 +n07742313 +n07740220 +n07740954 +n07740461 +n07740342 +n07745940 +n07767171 +n07744246 +n07744057 +n07744811 +n07744682 +n07745466 +n07743902 +n07746334 +n07746186 +n07743544 +n07743224 +n07755707 +n07756951 +n07755929 +n07757990 +n07757312 +n07757511 +n07734744 +n07719213 +n07768423 +n07735510 +n07718472 +n07710283 +n07713395 +n07708398 +n07710007 +n07718747 +n07708798 +n07723039 +n07715561 +n07709333 +n07730406 +n07730033 +n07733394 +n07713267 +n07722217 +n07817871 +n07736813 +n07719839 +n07712267 +n07730207 +n07710616 +n07710952 +n07711569 +n07711080 +n07713763 +n07713895 +n07733567 +n07715103 +n07715221 +n07715407 +n07714990 +n07735687 +n07735803 +n07714188 +n07714448 +n07714895 +n07714571 +n07714078 +n07720442 +n07734017 +n07713074 +n07734555 +n07720615 +n07721325 +n07720875 +n07721195 +n07721018 +n07721456 +n07722052 +n07721942 +n07721678 +n07734292 +n07734183 +n07724943 +n07725376 +n07726095 +n07725255 +n07729485 +n07726796 +n07727458 +n07727048 +n07727578 +n07727868 +n07728804 +n07728053 +n07728585 +n07728181 +n07729384 +n07729828 +n07725531 +n07725789 +n07725888 +n07715721 +n07717070 +n07716906 +n07716358 +n07716034 +n07717556 +n07717410 +n07720277 +n07736256 +n07723330 +n07719616 +n07736692 +n07733712 +n07732747 +n07730855 +n07731587 +n07731006 +n07723559 +n07724654 +n07724269 +n07724492 +n07722485 +n07723177 +n07722888 +n07639069 +n07679356 +n07682197 +n07680517 +n07695878 +n07685730 +n07682316 +n07684517 +n07680761 +n07681691 +n07684600 +n07684164 +n07686720 +n07680932 +n07687211 +n07681450 +n07683786 +n07695742 +n07682477 +n07686873 +n07684289 +n07683490 +n07682808 +n07690585 +n07684938 +n07690892 +n07685399 +n07693972 +n07690273 +n07691091 +n07687789 +n07685218 +n07694516 +n07694839 +n07694659 +n07690511 +n07690739 +n07690431 +n07688624 +n07688898 +n07689003 +n07690152 +n07693725 +n07690019 +n07692614 +n07691758 +n07691539 +n07691650 +n07693223 +n07693048 +n07691237 +n07687626 +n07687381 +n07687469 +n07871810 +n07684084 +n14580897 +n15062057 +n14698884 +n14696793 +n14765422 +n14844693 +n15019030 +n12167075 +n14974264 +n14858292 +n15075141 +n04033425 +n07556637 +n07566340 +n07560652 +n07881800 +n07938313 +n07800091 +n07570720 +n01464844 +n07556406 +n07840804 +n07802417 +n07925608 +n07844867 +n07569644 +n07568502 +n07809096 +n07843775 +n07755089 +n07882497 +n07573347 +n07923748 +n07572957 +n07731952 +n07804323 +n07804771 +n07803093 +n07803545 +n07732168 +n07732636 +n07804657 +n07804900 +n07809368 +n07841345 +n07827284 +n07827130 +n07822518 +n07827410 +n07816052 +n07812184 +n07810907 +n07858595 +n07811416 +n07824702 +n07818277 +n07819769 +n07920989 +n07822323 +n07815424 +n07814390 +n07826930 +n07814487 +n07814203 +n07583066 +n07822845 +n07767344 +n07823105 +n07828987 +n07582609 +n07825972 +n07823460 +n07823698 +n07822197 +n07856270 +n07767709 +n07829412 +n07829331 +n07829248 +n07857731 +n07857170 +n07838233 +n07836838 +n07826091 +n07830593 +n07840027 +n07832416 +n07832902 +n07835921 +n07835457 +n07831146 +n07831267 +n07834618 +n07834507 +n07595914 +n07858978 +n07859583 +n07860103 +n07860331 +n07860447 +n07816164 +n07818689 +n07821260 +n07820683 +n07816575 +n07817160 +n07817315 +n07819166 +n07817024 +n07818995 +n07816398 +n07820497 +n07932841 +n07820145 +n07819896 +n07816296 +n07821758 +n07933154 +n07935379 +n07935043 +n07847198 +n07844042 +n07848196 +n07847453 +n07847917 +n07847827 +n07678729 +n07860805 +n07860988 +n07883031 +n07623136 +n07861158 +n07627931 +n07628068 +n07565161 +n07565083 +n07561590 +n07561112 +n07560903 +n07562495 +n07564971 +n07938149 +n07938007 +n07884567 +n07924033 +n07919310 +n07891189 +n07922764 +n07929519 +n07921455 +n07933274 +n07927197 +n07925966 +n07891309 +n07936263 +n07883251 +n07914271 +n07911371 +n07901587 +n07891433 +n07891726 +n07886176 +n07886057 +n07907943 +n07921615 +n07886572 +n07902121 +n07886463 +n07912211 +n07911677 +n07914777 +n07930554 +n07930433 +n07930315 +n07915491 +n07915094 +n07913393 +n07916041 +n07914995 +n07916183 +n07914413 +n07917392 +n07917133 +n07915918 +n07930864 +n07931870 +n07932039 +n07930062 +n07906111 +n07907037 +n07902799 +n07904865 +n07905474 +n07902937 +n07904395 +n07905038 +n07902336 +n07905979 +n07903101 +n07904760 +n07903208 +n07904934 +n07906284 +n07902443 +n07903841 +n07903962 +n07903731 +n07903643 +n07907161 +n07906718 +n07907831 +n07907548 +n07907429 +n07906877 +n07906572 +n07893253 +n07892418 +n07893642 +n07899003 +n07896287 +n07896661 +n07893528 +n07896165 +n07900225 +n07893891 +n07900406 +n07895237 +n07898745 +n07896060 +n07899108 +n07892512 +n07897750 +n07892813 +n07894703 +n07894102 +n07894551 +n07900616 +n07900958 +n07900734 +n07900825 +n07901457 +n07898117 +n07895435 +n07899434 +n07899292 +n07894298 +n07895595 +n07894965 +n07897865 +n07895839 +n07895710 +n07898333 +n07897438 +n07895962 +n07896893 +n07899899 +n07895100 +n07898443 +n07899533 +n07894799 +n07897975 +n07899660 +n07894451 +n07910656 +n07909593 +n07911249 +n07910048 +n07908411 +n07910379 +n07908647 +n07886849 +n07887634 +n07887099 +n07889510 +n07887192 +n07887304 +n07888229 +n07887967 +n07889274 +n07887461 +n07888465 +n07890226 +n07890352 +n07889814 +n07890068 +n07890540 +n07888816 +n07924834 +n07924443 +n07924276 +n07920540 +n07920222 +n07920052 +n07920349 +n07919441 +n07731284 +n07919572 +n07920872 +n07921239 +n07934282 +n07933799 +n07929172 +n07927931 +n07928488 +n07928367 +n07927512 +n07928887 +n07928696 +n07928790 +n07936745 +n07935737 +n07936548 +n07801508 +n07805594 +n07800740 +n07801091 +n07802026 +n07801779 +n07801892 +n07557165 +n07560193 +n07651025 +n07560331 +n07557434 +n07556970 +n05399243 +n15089258 +n07560542 +n07573696 +n07613815 +n07643981 +n07596684 +n07600696 +n07597145 +n07597365 +n07599998 +n07596967 +n07620689 +n07642471 +n07643200 +n07642742 +n07643026 +n07642933 +n07643306 +n07606538 +n07599911 +n07607138 +n07608429 +n07598256 +n07606669 +n07607605 +n07601572 +n07609632 +n07605597 +n07607967 +n07609215 +n07841907 +n07606764 +n07605944 +n07601686 +n07605380 +n07605040 +n07601809 +n07605474 +n07842130 +n07842044 +n07600285 +n07600177 +n07842202 +n07579688 +n07580053 +n07588947 +n07842753 +n07583197 +n07879350 +n07880751 +n07868200 +n07863802 +n07875152 +n07824191 +n07878785 +n07865484 +n07866015 +n07868955 +n07861557 +n07580253 +n07877187 +n07866868 +n07880458 +n07648913 +n07580470 +n07866277 +n07591961 +n07868508 +n07871436 +n07864934 +n07874780 +n07879659 +n07878926 +n07937461 +n07842433 +n07862611 +n07863374 +n07866723 +n07867021 +n07867164 +n07726525 +n07624466 +n07842308 +n07877299 +n07880080 +n07862348 +n07873464 +n07869775 +n07879953 +n07625061 +n07843636 +n07696403 +n07580592 +n07655263 +n07868340 +n07619004 +n07879174 +n07867324 +n07843464 +n07877961 +n07873807 +n07867421 +n07654298 +n07878647 +n07611839 +n07842605 +n07871720 +n07869611 +n07876651 +n07880968 +n07875436 +n07806221 +n07841495 +n07823951 +n07712382 +n07591586 +n07590320 +n07587111 +n07592481 +n07590611 +n07591473 +n07590502 +n07591049 +n07592768 +n07585758 +n07588193 +n07586894 +n07588299 +n07584110 +n07587441 +n07587023 +n07586099 +n07588574 +n07584332 +n07586604 +n07586718 +n07585107 +n07585557 +n07585208 +n07584593 +n07585906 +n07584423 +n07587618 +n07587700 +n07588111 +n07704054 +n07704205 +n07871234 +n07870167 +n07863547 +n07700003 +n07619208 +n07619409 +n07874159 +n07874343 +n07874259 +n07874441 +n07874063 +n07867751 +n07867616 +n07808587 +n07807834 +n07806633 +n07807171 +n07807710 +n07807922 +n07808904 +n07806774 +n07807472 +n07841639 +n07841800 +n07695965 +n07712748 +n07712559 +n07697825 +n07697313 +n07696728 +n07696625 +n07698543 +n07698401 +n07865105 +n07696977 +n07698250 +n07698782 +n07697100 +n07696839 +n07697537 +n07712856 +n07712959 +n07579575 +n07579787 +n07609840 +n07581346 +n07611991 +n07613266 +n07611358 +n07612632 +n07612996 +n07613480 +n07611267 +n07612367 +n07611148 +n07611046 +n07617611 +n07612137 +n07616386 +n07631926 +n07615774 +n07616487 +n07614730 +n07614500 +n07614198 +n07616748 +n07616046 +n07617051 +n07615671 +n07615190 +n07614825 +n07615460 +n07617708 +n07618432 +n07582152 +n07734879 +n07581775 +n07582277 +n07730320 +n07581249 +n15089645 +n15089472 +n15093137 +n15093298 +n15090742 +n15091473 +n14919819 +n15091669 +n14810561 +n14973585 +n15091304 +n15091846 +n15092227 +n15090065 +n07576438 +n07577374 +n07575984 +n07574602 +n07574426 +n07593199 +n07576182 +n07574923 +n07574780 +n07575726 +n07575076 +n07578093 +n07576577 +n07577144 +n07576781 +n07574504 +n07577538 +n09335240 +n00027167 +n09334396 +n09283193 +n03892891 +n09287968 +n03059685 +n00003553 +n09300905 +n09452395 +n09260907 +n08630039 +n08630985 +n09386842 +n08593262 +n08620061 +n09379111 +n08649711 +n08658309 +n08568978 +n08512259 +n03823111 +n04170933 +n09433839 +n08578517 +n08640739 +n08574314 +n08552138 +n08645104 +n08505018 +n08659861 +n08659446 +n08673395 +n08583455 +n08598301 +n08651247 +n03120491 +n02802544 +n08614632 +n08674739 +n08569998 +n08494231 +n08677424 +n08616050 +n08518171 +n08573842 +n08521623 +n03368352 +n03417345 +n04454908 +n03902482 +n04610879 +n08579352 +n03963645 +n03417749 +n08524735 +n08537837 +n08551296 +n08628141 +n08633683 +n08539072 +n09249034 +n09263912 +n08583292 +n09443281 +n08547544 +n08664443 +n04602044 +n08580944 +n03581125 +n08517676 +n08598568 +n08584914 +n03899933 +n02776631 +n03322099 +n03935234 +n04052442 +n03159535 +n15102894 +n09242389 +n09382099 +n09282208 +n09392402 +n09393605 +n09445289 +n03030880 +n03946162 +n03485997 +n03882960 +n04322026 +n03474896 +n02764398 +n02907082 +n03948830 +n09205509 +n09472413 +n09443453 +n09309292 +n09366017 +n09366317 +n09376786 +n09348460 +n09246464 +n09433442 +n09454153 +n09409752 +n09403734 +n09331251 +n09437454 +n09238926 +n09283866 +n09217230 +n09305898 +n09288635 +n09308743 +n09308572 +n09194227 +n09289331 +n09468604 +n09344324 +n09335809 +n09435739 +n09215437 +n09259219 +n09217638 +n09304750 +n09206896 +n09405787 +n09233446 +n09290444 +n09457979 +n09245515 +n09376526 +n09415671 +n09448690 +n09230041 +n09398076 +n09453008 +n09303008 +n09359803 +n09302616 +n09409512 +n09399592 +n09199101 +n09230202 +n09283405 +n09326662 +n09193705 +n09218641 +n09472597 +n09421951 +n09270735 +n09406793 +n09213434 +n09256479 +n09210862 +n09421799 +n09224725 +n09396465 +n09362945 +n09259025 +n09398677 +n09428293 +n09447666 +n09332890 +n08596076 +n09428628 +n09361517 +n09265620 +n09303528 +n09436444 +n09274152 +n09213565 +n09269472 +n09206985 +n09228055 +n09466678 +n09415584 +n09475925 +n09257843 +n09239302 +n09294877 +n00021939 +n00004258 +n00019128 +n02749953 +n02852523 +n03767112 +n14977504 +n03129123 +n03848729 +n03964744 +n04362025 +n04469003 +n04341686 +n03575240 +n03873064 +n03122748 +n03309808 +n02871147 +n03364340 +n14786479 +n03169390 +n04564698 +n04339291 +n00022903 +n03315023 +n03302121 +n03076708 +n04188643 +n03354613 +n14976871 +n03670849 +n02917521 +n04414909 +n04435180 +n02725872 +n04076846 +n02743547 +n03816849 +n04007894 +n03934656 +n03720163 +n04227144 +n04260364 +n03925226 +n04564581 +n02744844 +n04042358 +n03927091 +n03927539 +n03876519 +n04485423 +n03835197 +n03342127 +n04246271 +n04321238 +n04180314 +n03625783 +n03684611 +n03514693 +n03421485 +n04026180 +n02870526 +n04599396 +n06415688 +n03822171 +n04582205 +n03727605 +n03849679 +n04598792 +n03631922 +n02933649 +n03600722 +n03169176 +n03418618 +n02727016 +n03526198 +n03794798 +n03859608 +n03968581 +n03717447 +n03614782 +n03915900 +n04431025 +n03974070 +n02779435 +n03941231 +n04399382 +n03603442 +n09229709 +n03548402 +n03944138 +n04238128 +n04284869 +n03061211 +n03219135 +n09282724 +n09191635 +n09443641 +n04186268 +n03447358 +n03607029 +n03536348 +n02857023 +n04381860 +n04213626 +n03961939 +n04394630 +n03365592 +n04501550 +n04296562 +n03159640 +n04354182 +n03549732 +n03360300 +n03892178 +n02768973 +n03906224 +n03313333 +n02990373 +n02861886 +n03365991 +n02898711 +n03109693 +n13898207 +n04358874 +n02687821 +n03135532 +n03545756 +n03548626 +n03469175 +n03688943 +n02914991 +n04191595 +n09218315 +n03074380 +n02699494 +n02733524 +n04460130 +n04471148 +n03792048 +n03388043 +n03837869 +n03321954 +n02733213 +n03687137 +n03065424 +n02839110 +n03894379 +n03725717 +n04226464 +n03071160 +n03839993 +n02913152 +n04128413 +n04008947 +n03917198 +n03222318 +n04295881 +n03241335 +n02735688 +n02777734 +n03984381 +n03216828 +n03517899 +n03546340 +n04361095 +n13897996 +n03171356 +n03290195 +n03743902 +n03297735 +n04217882 +n02863426 +n03408054 +n03463381 +n03758089 +n03686130 +n02800497 +n03379828 +n03233744 +n02953197 +n04108822 +n03865557 +n04492749 +n04532670 +n04311004 +n03122073 +n03415486 +n04366367 +n04479939 +n03956922 +n03069752 +n04592465 +n03316406 +n03212811 +n03844673 +n04068441 +n04103094 +n03387653 +n04311595 +n03697007 +n04300358 +n04032603 +n02810782 +n03492250 +n03826186 +n03547054 +n04411264 +n03550153 +n03560430 +n03254189 +n03792972 +n04025508 +n03900979 +n02769963 +n03374473 +n02954163 +n03334291 +n04549028 +n03035252 +n03448956 +n04113765 +n03975035 +n04486054 +n02905152 +n03784896 +n04104384 +n02946127 +n04501947 +n03047052 +n04206790 +n03029197 +n03767745 +n04028581 +n04220250 +n04556948 +n04479823 +n04028764 +n04312432 +n03347617 +n03519387 +n04361260 +n03098959 +n02826886 +n02814860 +n02922292 +n04251701 +n04051825 +n03390786 +n02811936 +n02699770 +n04546855 +n03409393 +n04544325 +n02755823 +n03904657 +n02825961 +n02898369 +n04326799 +n02796623 +n03839795 +n03967942 +n03659686 +n03454707 +n04127395 +n03795580 +n02788148 +n02894605 +n03459775 +n04571566 +n04047401 +n03549589 +n04304680 +n03327234 +n03160309 +n03427296 +n03221720 +n03698815 +n03985881 +n04501370 +n03395514 +n02963821 +n04153025 +n03394649 +n03226880 +n03579538 +n04239074 +n04086446 +n02793842 +n03498662 +n04329834 +n04547592 +n04082710 +n04046974 +n03000134 +n03252637 +n03511175 +n04604644 +n03930313 +n04326547 +n04560882 +n02920369 +n03262072 +n03108853 +n04390977 +n03999160 +n03542333 +n04409384 +n02666943 +n02726681 +n02763604 +n03478756 +n03545150 +n04104500 +n04081699 +n03859280 +n03402941 +n03739518 +n03542605 +n03661043 +n02977936 +n03322570 +n03953416 +n04081281 +n03770316 +n04112654 +n03839671 +n03842012 +n04407686 +n04217546 +n03449564 +n03457902 +n04093625 +n03956157 +n04018399 +n02882190 +n03544360 +n04118635 +n02734725 +n04233124 +n03430418 +n04146050 +n03007444 +n04417809 +n03479397 +n03092166 +n02993546 +n04080705 +n08640531 +n03788498 +n08560295 +n04095109 +n04229737 +n03541696 +n03790755 +n03036022 +n03466839 +n03698723 +n03333610 +n03837698 +n03121298 +n04187547 +n03416489 +n02968074 +n03860404 +n03055857 +n02859443 +n04598318 +n02727426 +n03730334 +n03210552 +n04294879 +n03016389 +n03123809 +n02793495 +n03884778 +n03028079 +n04407435 +n04210390 +n04346328 +n03724756 +n04374735 +n03788195 +n03007130 +n03618982 +n02667576 +n02984061 +n02984203 +n03772077 +n02935658 +n04111414 +n02760099 +n02892499 +n02935891 +n03199647 +n02956699 +n03282295 +n04461437 +n03005033 +n03152303 +n04305210 +n03121431 +n03558176 +n03557360 +n02696165 +n03393017 +n04258438 +n02919792 +n04115256 +n02932400 +n03257210 +n03719053 +n03685820 +n03428090 +n03686924 +n04131368 +n03118969 +n03219483 +n04052658 +n02857477 +n03180865 +n04535524 +n03002816 +n04079244 +n03322836 +n04413969 +n02907873 +n03878066 +n04305323 +n03718458 +n04354026 +n03158186 +n04535370 +n03010915 +n03718935 +n04073948 +n03439348 +n03892557 +n03877845 +n03781244 +n02667379 +n02667478 +n03165616 +n03092314 +n03801671 +n03849814 +n03801533 +n03032252 +n03678729 +n03529860 +n03097362 +n04177931 +n02940385 +n03111041 +n03064935 +n03626115 +n02838728 +n03356858 +n02902079 +n04439585 +n03263076 +n04453037 +n03942920 +n03379204 +n03522003 +n03220692 +n02782778 +n02918112 +n02704949 +n03899768 +n03109881 +n02775178 +n03517647 +n03024064 +n02894158 +n04030518 +n03004824 +n02758134 +n03120198 +n03200231 +n04105893 +n02750070 +n03285912 +n03813078 +n02694045 +n04328946 +n03443005 +n03378005 +n02754656 +n03047941 +n03382292 +n04446276 +n04356925 +n03288500 +n04363991 +n04112579 +n03038685 +n03412058 +n03718581 +n02991302 +n03691817 +n04139395 +n03238131 +n02839592 +n02824319 +n03619890 +n03660909 +n04329477 +n04602762 +n04180229 +n02710324 +n03200701 +n04065464 +n03541091 +n04058096 +n02873839 +n03089879 +n02821627 +n03040376 +n03679712 +n03222176 +n03478907 +n04061793 +n02857644 +n04345028 +n03683708 +n03062122 +n04406239 +n03079741 +n03120778 +n03982331 +n02807731 +n03098688 +n02715513 +n04558478 +n03746486 +n04555291 +n04018667 +n03529175 +n03653740 +n04345201 +n03885535 +n04324387 +n04523831 +n04067818 +n03200539 +n02952585 +n03319745 +n04119478 +n03283221 +n04064862 +n03850245 +n04401680 +n04541987 +n03090172 +n04209613 +n03727465 +n03788601 +n03465718 +n03542860 +n03225108 +n03836062 +n03165466 +n03457008 +n03086580 +n03878211 +n03303831 +n03891538 +n03235042 +n04000592 +n03075946 +n02932019 +n03939677 +n02931148 +n03696065 +n02933462 +n03061505 +n04305572 +n02960352 +n02934451 +n04299370 +n03235180 +n04414199 +n02936714 +n03964495 +n03907227 +n04539203 +n03993703 +n03683079 +n03016737 +n03003730 +n04061969 +n02843276 +n04037220 +n03550289 +n03124590 +n04100519 +n03376159 +n04262161 +n02921884 +n03348868 +n04080454 +n03404449 +n02868638 +n03555006 +n04076713 +n03732114 +n03617095 +n02849885 +n03837606 +n03425325 +n03566193 +n03762434 +n03073694 +n03343560 +n03346455 +n02731398 +n02991847 +n03148324 +n04295571 +n03411544 +n02705201 +n03854722 +n04327204 +n04355267 +n03399677 +n04527648 +n03168107 +n02770211 +n03986704 +n03721590 +n03251533 +n02853016 +n03259505 +n04409625 +n03679384 +n03776460 +n03088389 +n02726305 +n04549919 +n02992032 +n03088580 +n04613696 +n03685307 +n04517408 +n03507241 +n03354207 +n03042490 +n03529629 +n04172107 +n04584373 +n04412416 +n02672371 +n03349892 +n02932693 +n02822064 +n03361297 +n03010473 +n04360501 +n03391770 +n03903868 +n02929289 +n03373943 +n02669295 +n04087826 +n02926591 +n04589593 +n03390983 +n03416094 +n03530642 +n04492375 +n03646916 +n03111296 +n03931765 +n04587648 +n03042697 +n04478512 +n02689144 +n03454536 +n03453443 +n04545305 +n02977619 +n04387261 +n02732827 +n04038727 +n03793186 +n04136510 +n02976350 +n03855333 +n02813399 +n04297750 +n04232800 +n03211789 +n04110178 +n03986562 +n04473108 +n03041810 +n03224603 +n03224753 +n03637898 +n03320959 +n03961711 +n02790669 +n02835829 +n03696301 +n03207630 +n04459773 +n03896526 +n03900393 +n03792526 +n04340935 +n03386011 +n03385557 +n02806088 +n03610098 +n03628511 +n02676938 +n02695627 +n03723781 +n03334382 +n02805983 +n03296328 +n03878963 +n02980441 +n02993194 +n03743016 +n04178329 +n02892201 +n03810952 +n03884926 +n03220237 +n03745571 +n03953020 +n03574555 +n04511002 +n03748162 +n03841666 +n02931417 +n03506370 +n03965456 +n03119203 +n03176763 +n04202417 +n03722288 +n02879309 +n04131208 +n04200800 +n02871525 +n03871371 +n04428634 +n03606251 +n04462240 +n03039827 +n02813544 +n03436417 +n03367410 +n03249342 +n03416640 +n03173387 +n04245508 +n02791270 +n04299215 +n04443257 +n03822656 +n02927161 +n03952576 +n03089624 +n03099274 +n02813645 +n08492461 +n03461385 +n03847823 +n04358707 +n03555426 +n03457686 +n04261281 +n03322704 +n08571898 +n03822504 +n02885882 +n03504723 +n03111690 +n03856012 +n03592245 +n03911513 +n04005630 +n04447443 +n04566257 +n03294048 +n03091374 +n03563967 +n03405265 +n03183080 +n02997391 +n04377057 +n03094503 +n03100490 +n06254669 +n03176594 +n02807523 +n03128519 +n03690938 +n04186051 +n03476991 +n03794136 +n03916031 +n03475823 +n02723165 +n03994008 +n03113152 +n02808185 +n03484487 +n03067339 +n04357314 +n03640850 +n02862916 +n04450640 +n03487444 +n02683791 +n03992325 +n03898271 +n03916470 +n03071021 +n04448070 +n03980026 +n02901793 +n04447276 +n04386792 +n03177165 +n03519081 +n03714235 +n03314780 +n03676087 +n03309687 +n03724066 +n03676483 +n04112752 +n03309110 +n03308481 +n02738031 +n03171228 +n02866578 +n02703275 +n03812924 +n02813752 +n02746365 +n03647520 +n02950256 +n03332393 +n03786715 +n02801450 +n03553248 +n02753044 +n04113641 +n04206570 +n04063373 +n04285146 +n03926148 +n03811847 +n03889726 +n03430959 +n04137444 +n03414162 +n03888257 +n03278248 +n02727825 +n02761206 +n03729951 +n02774921 +n04393095 +n02979290 +n03192543 +n04533802 +n02799897 +n03135030 +n03039259 +n04225729 +n04607035 +n03132261 +n02802721 +n03594148 +n04212282 +n03446832 +n04275661 +n04318131 +n02885338 +n02885462 +n03472232 +n04571292 +n02800213 +n02811059 +n02811204 +n02797881 +n02811350 +n02799175 +n03528901 +n03349771 +n04425804 +n04164406 +n04102037 +n04102162 +n04102618 +n03558404 +n03523987 +n04273972 +n03336282 +n03132076 +n04582869 +n03445924 +n03447075 +n04399537 +n03446070 +n04597066 +n03585073 +n03244047 +n04284341 +n04569822 +n03762332 +n04028074 +n03823216 +n03950537 +n04135024 +n03524150 +n03978686 +n03535780 +n03538037 +n04509260 +n03888605 +n04469514 +n02777292 +n04524142 +n03980478 +n03255030 +n02790996 +n03289660 +n02942699 +n03037404 +n03338821 +n03667664 +n02884994 +n03358726 +n03976467 +n03974915 +n04569063 +n03789171 +n03196062 +n03987266 +n04069434 +n04609531 +n04067658 +n03817191 +n04071263 +n03619396 +n04091097 +n03351434 +n04295081 +n04091693 +n03138669 +n03139464 +n04179824 +n03349469 +n02966687 +n03650551 +n03241093 +n03240683 +n03494706 +n04247876 +n03503718 +n04124202 +n03480719 +n02900160 +n04290615 +n04266162 +n02768226 +n02778669 +n04028315 +n03982430 +n02882647 +n03716327 +n03020416 +n04113406 +n03442756 +n04540255 +n03941417 +n04254680 +n03982232 +n02882301 +n04256891 +n03333252 +n04023962 +n02839351 +n03134739 +n03131967 +n04409515 +n03445777 +n04118538 +n03145719 +n03742019 +n02802426 +n03267113 +n03942813 +n03482877 +n02799071 +n04039742 +n02861147 +n04540053 +n03598930 +n06785654 +n03014440 +n04579986 +n03901750 +n02802215 +n03820318 +n03278914 +n03782006 +n03781787 +n04405762 +n04401088 +n03857828 +n03916720 +n02872529 +n02979186 +n02988304 +n04060647 +n02757462 +n03656957 +n03963294 +n04405540 +n03034405 +n02979074 +n02995345 +n03775388 +n04142731 +n04392985 +n03181293 +n03777754 +n03293741 +n04392526 +n02705944 +n02992529 +n04270371 +n03179910 +n03902125 +n03488438 +n03187595 +n04044498 +n04405907 +n04043733 +n04137773 +n03516996 +n03046921 +n04077430 +n03517760 +n04315948 +n03584254 +n04546340 +n03584400 +n03436182 +n02942349 +n04404997 +n03909160 +n04026053 +n04173511 +n04070003 +n03257586 +n03509608 +n04171208 +n04450243 +n04506506 +n03434188 +n03567066 +n02923129 +n03386544 +n03046802 +n03757604 +n03927299 +n03924679 +n04608923 +n03316105 +n03767459 +n03987990 +n03084834 +n03422072 +n02855390 +n02921029 +n03425769 +n03871524 +n02852360 +n04105704 +n04408871 +n04241573 +n04402057 +n03664943 +n03605915 +n03543012 +n03196990 +n03639497 +n02840134 +n04594218 +n02999410 +n03086868 +n02790823 +n03886641 +n02709637 +n03374838 +n02835412 +n04440963 +n03011018 +n03600977 +n03093792 +n03228967 +n04573281 +n03521076 +n04144241 +n04571958 +n04160372 +n03787523 +n02928299 +n04333869 +n03213826 +n04476972 +n04593866 +n02788689 +n04451818 +n04516672 +n04116512 +n03816136 +n03294833 +n04317420 +n02908217 +n03532342 +n04185071 +n04285622 +n03653220 +n04369282 +n03346135 +n03837422 +n04317833 +n03039947 +n04100174 +n04608567 +n04208427 +n04282872 +n03396074 +n02865931 +n04112147 +n04459909 +n03659292 +n04463679 +n03487090 +n03138344 +n04317976 +n03613592 +n04393808 +n03903424 +n04099003 +n03470629 +n04264628 +n02771004 +n04193377 +n04400737 +n02670683 +n04367011 +n03489162 +n03588951 +n03919430 +n03418242 +n03967562 +n03075097 +n03239726 +n03154446 +n04387706 +n03417970 +n04050066 +n04299963 +n03684224 +n03919289 +n03970156 +n03941684 +n03966976 +n04258859 +n04266486 +n03481172 +n03946076 +n04606574 +n04154565 +n04489817 +n04140064 +n03848348 +n04150980 +n04208210 +n02898269 +n04269944 +n02966545 +n03430313 +n03715386 +n03731695 +n04457910 +n03947466 +n02680754 +n03848168 +n02697675 +n02886434 +n03474779 +n03376938 +n03488188 +n04016240 +n04016576 +n03109150 +n02877962 +n02951585 +n03511333 +n03649909 +n03995856 +n04089976 +n03995372 +n03240140 +n03154073 +n04503593 +n02844307 +n02848216 +n03624400 +n02866386 +n03030557 +n03265032 +n04148054 +n03623556 +n02764044 +n04057047 +n04594828 +n03020692 +n03954731 +n04186848 +n04250473 +n04016684 +n04163530 +n02973904 +n02880842 +n03973628 +n03041632 +n03549473 +n02976123 +n03890093 +n03658185 +n04373089 +n03911658 +n02811468 +n03498962 +n04185804 +n04332074 +n04127521 +n03067212 +n04597400 +n03601638 +n04247630 +n04283585 +n03621049 +n02997607 +n03403643 +n04103206 +n04059516 +n03724417 +n03621377 +n04293119 +n03775199 +n03101517 +n03101986 +n03454885 +n03767966 +n03266371 +n04578934 +n02850732 +n03880531 +n03133878 +n02999138 +n04270147 +n03459328 +n03284981 +n04309548 +n03101796 +n03101156 +n04500060 +n03846677 +n04317325 +n03400231 +n04097760 +n04596742 +n04138977 +n03453231 +n03047799 +n03984234 +n03262519 +n04326676 +n03992703 +n04282992 +n03018209 +n02869155 +n03713436 +n03317788 +n03625646 +n03133050 +n04546194 +n03729826 +n03053474 +n03332271 +n04277352 +n04321453 +n04296261 +n03250847 +n03715669 +n02949202 +n04374315 +n02806379 +n04381724 +n04491388 +n02698634 +n03355925 +n03141823 +n03274265 +n04453156 +n04122349 +n04156140 +n03475581 +n02902687 +n04185946 +n03908714 +n04310904 +n03145522 +n04039381 +n04292414 +n04409806 +n02772700 +n04426316 +n04333129 +n03012013 +n04072551 +n03831382 +n03651843 +n04156946 +n03873416 +n02831894 +n04150153 +n03258905 +n04292921 +n02906734 +n04367480 +n04111190 +n04549629 +n04182322 +n03949317 +n03616428 +n02764779 +n03976657 +n03351979 +n03091044 +n04434531 +n03244231 +n03127408 +n04472563 +n04277493 +n02946824 +n02871824 +n04319937 +n04230603 +n03051396 +n02931836 +n04267577 +n03726993 +n03726760 +n02883004 +n04610676 +n03775847 +n04115996 +n03711999 +n03382856 +n03374372 +n04279353 +n03908204 +n03906997 +n03518943 +n03003091 +n03128248 +n03652100 +n02783161 +n04185529 +n04033901 +n03388183 +n03326948 +n03405725 +n03842156 +n03200906 +n04550184 +n02821943 +n04379243 +n04379964 +n04549122 +n03636649 +n03201035 +n04555400 +n02912065 +n02933112 +n02766320 +n02822579 +n03649797 +n03129753 +n02870880 +n03290653 +n03298716 +n04161981 +n04165409 +n03015254 +n03337140 +n04104147 +n02963302 +n04529681 +n03050546 +n02739550 +n02818832 +n02831724 +n03962852 +n03540914 +n02920083 +n04491638 +n03388549 +n03115762 +n02920259 +n04503413 +n04236809 +n04222210 +n03482252 +n03799876 +n03225988 +n03414676 +n03465426 +n04381587 +n03116530 +n02699629 +n02894337 +n04301000 +n03090000 +n03904060 +n03620967 +n03850492 +n04398951 +n03653583 +n04603729 +n03428226 +n03238586 +n03179701 +n03246933 +n03063968 +n04480033 +n03092883 +n03011741 +n02789487 +n03735963 +n04061681 +n04130143 +n04247736 +n03231368 +n03630262 +n04608329 +n04164868 +n03164722 +n03201208 +n03202354 +n04067921 +n03367059 +n04380533 +n04057981 +n03237340 +n03018349 +n03742115 +n02804414 +n03131574 +n02970534 +n03125729 +n03001627 +n04447861 +n04326896 +n04256520 +n03858418 +n02828884 +n03649674 +n03002711 +n04099969 +n04373704 +n04429376 +n04331277 +n03632729 +n03518445 +n02738535 +n04590933 +n03376595 +n04576002 +n03790953 +n02791124 +n03262932 +n04062428 +n03786621 +n04593077 +n03168217 +n02946270 +n03801880 +n04382438 +n03380724 +n04177755 +n03165096 +n03100346 +n03693474 +n03015149 +n04344873 +n03891251 +n03360622 +n03920867 +n04177820 +n04590021 +n03016953 +n03518305 +n02843553 +n03508101 +n03666591 +n06791372 +n03099945 +n03141702 +n03243218 +n03626760 +n03904909 +n03800933 +n04200537 +n04198797 +n03699975 +n03088707 +n02776205 +n04294212 +n03339643 +n03738472 +n02676261 +n04474466 +n03008976 +n02688443 +n04114844 +n03929660 +n03287351 +n03320046 +n03553019 +n03175604 +n02678897 +n04461879 +n04359589 +n03851341 +n04331639 +n04450749 +n03923918 +n03574816 +n03074855 +n04074963 +n03302790 +n03075768 +n04554406 +n04210120 +n04562262 +n02855089 +n04526964 +n02895606 +n02730265 +n04226826 +n03467796 +n04081844 +n03614007 +n03269401 +n02729965 +n03345837 +n03111899 +n04069276 +n02694426 +n03277771 +n04252331 +n03525827 +n03744840 +n03613294 +n03827536 +n04263760 +n03568117 +n03180969 +n02895438 +n03565288 +n02683558 +n03537241 +n03267972 +n04228054 +n03664675 +n04258333 +n03272239 +n04041069 +n03423479 +n03099147 +n04265275 +n04330267 +n03031422 +n03728437 +n07273802 +n06793231 +n06794110 +n06874185 +n03269203 +n02981321 +n03582959 +n04375405 +n03307792 +n02988963 +n03580518 +n04338517 +n03279153 +n03614532 +n04586932 +n02803349 +n03915437 +n03254862 +n03025886 +n02787622 +n04615226 +n04132603 +n03467517 +n02880546 +n04224842 +n03698360 +n03716887 +n03716966 +n03495258 +n02676566 +n03499907 +n04506289 +n03272010 +n04536153 +n04536866 +n02992211 +n04536335 +n04536595 +n04330998 +n04419642 +n03273551 +n04376400 +n03928116 +n03039015 +n03854065 +n02672831 +n03452741 +n04515003 +n04278353 +n03738066 +n02766792 +n03086457 +n03496296 +n04278247 +n03840681 +n04598582 +n02891788 +n03854815 +n03393324 +n04579667 +n03945615 +n03609397 +n03372029 +n02817799 +n03228016 +n04222847 +n02804610 +n03838899 +n03037709 +n04141076 +n02793089 +n02912894 +n03369276 +n03394916 +n04487394 +n03110669 +n03494537 +n03494278 +n03086670 +n03006626 +n03884397 +n02775483 +n03343354 +n03912218 +n03245724 +n02803934 +n02804252 +n02804123 +n03301568 +n03483230 +n02869249 +n03447721 +n04532831 +n04311174 +n03721384 +n03440682 +n03017168 +n03612965 +n03720891 +n03249569 +n03157348 +n02869737 +n02803666 +n04387400 +n04249415 +n04410086 +n04243941 +n03996416 +n03999992 +n02769290 +n04004475 +n03702248 +n03789946 +n04252653 +n02977058 +n03322940 +n03082979 +n04613939 +n03765561 +n04303357 +n03997484 +n03087069 +n04303497 +n04237423 +n04417180 +n04064401 +n02938886 +n04525305 +n04243546 +n02760199 +n03418915 +n02829596 +n03551395 +n04024274 +n03007591 +n03563200 +n04004767 +n03250405 +n03672827 +n03643737 +n03675235 +n04419868 +n03985069 +n04505036 +n02794664 +n04595285 +n03225777 +n02909285 +n03571942 +n04184435 +n03240892 +n03460040 +n03646296 +n03766044 +n03287733 +n03273061 +n03507963 +n03596285 +n02761557 +n02687423 +n03433877 +n04309049 +n03579982 +n04591517 +n03424630 +n03193107 +n03859000 +n04040373 +n04099175 +n03321103 +n02872333 +n04265904 +n02700064 +n04587404 +n04304375 +n03616763 +n03146846 +n03500699 +n03075634 +n04428191 +n03496892 +n03210245 +n03496612 +n04238763 +n06359193 +n03528523 +n04175147 +n03196324 +n04358117 +n04603399 +n03918480 +n03985232 +n03180011 +n03832673 +n03956785 +n03642806 +n03485407 +n03914337 +n04561422 +n03736064 +n03063485 +n04477219 +n04587559 +n03272125 +n03996145 +n02911332 +n03034663 +n03000684 +n04380916 +n04121728 +n02786837 +n04279462 +n03689157 +n03604156 +n03452267 +n02666196 +n02679257 +n03483823 +n04171831 +n04594489 +n03106898 +n03510244 +n02934168 +n03760310 +n04471632 +n03666362 +n03020034 +n03336575 +n03604843 +n04402984 +n03898129 +n04401828 +n03995265 +n03307037 +n03300443 +n03268918 +n04004990 +n03995535 +n03350602 +n03373237 +n03251932 +n04573937 +n04334365 +n03861271 +n04520784 +n04332243 +n02688273 +n03843555 +n04216634 +n04398834 +n03066849 +n03407865 +n02710201 +n04040759 +n03736970 +n04110955 +n04112430 +n02969010 +n03096960 +n03996849 +n02761392 +n02677718 +n03102859 +n03431243 +n04392764 +n03339529 +n04289027 +n04011827 +n02709367 +n03446268 +n04568069 +n03700963 +n04167346 +n04021798 +n03432129 +n04088797 +n02918595 +n03532672 +n04228215 +n03119510 +n04063154 +n04371774 +n04590746 +n04586581 +n04586421 +n03189083 +n04211528 +n03296081 +n02903204 +n03150232 +n04282494 +n03082807 +n02686227 +n02962200 +n03198500 +n02973017 +n04475411 +n03431745 +n04306592 +n02692086 +n04154152 +n04020298 +n04574999 +n03559999 +n03659809 +n03566329 +n03767203 +n04563204 +n04101701 +n02836035 +n02980036 +n03460147 +n04115144 +n03334912 +n04543772 +n04563413 +n02974003 +n04289690 +n03944341 +n03992509 +n03430551 +n03244919 +n03874293 +n04113194 +n04290507 +n02833793 +n03943115 +n04051549 +n02764505 +n04154340 +n03456299 +n03425413 +n02835724 +n04354487 +n03487886 +n02995871 +n03329302 +n04102406 +n02966193 +n04510706 +n03054901 +n03393761 +n03209359 +n02860415 +n04067472 +n04211857 +n02848523 +n03473227 +n03032811 +n04111668 +n03873699 +n03563460 +n03320421 +n03208556 +n04019541 +n02890188 +n04448361 +n03397947 +n03954393 +n04385799 +n03712111 +n04519153 +n04313503 +n03450018 +n03602883 +n04072193 +n04372370 +n02783459 +n02927887 +n04438507 +n03374649 +n03325088 +n04422875 +n02727141 +n03775636 +n04327682 +n04445952 +n04027023 +n03186818 +n03537412 +n03793850 +n03222516 +n02826589 +n03363549 +n03795758 +n03469493 +n03103396 +n03301833 +n02686379 +n03432061 +n03389611 +n04579432 +n04218564 +n03743279 +n03506560 +n02824448 +n03123917 +n03028596 +n03201529 +n04275548 +n03794056 +n03680858 +n04568557 +n03819994 +n03639077 +n03352628 +n04529962 +n04283255 +n04283096 +n04112252 +n03357716 +n04117464 +n03536122 +n04592741 +n03303217 +n03271574 +n02887079 +n03176386 +n02768114 +n04320973 +n03933933 +n03934042 +n02767433 +n04190052 +n03638883 +n02783994 +n04283378 +n02797692 +n04314914 +n02887209 +n03938401 +n02817031 +n04098513 +n03057920 +n03495570 +n04081044 +n02888569 +n04386051 +n02871005 +n04341414 +n03506184 +n04161358 +n04430475 +n03490884 +n04038440 +n03495039 +n02953455 +n03632577 +n02871439 +n03719343 +n03814639 +n03622839 +n02713003 +n02768655 +n02737660 +n03505133 +n03019685 +n02741475 +n04148579 +n03105467 +n04190376 +n04220036 +n04094720 +n04515129 +n02886599 +n04476831 +n02815950 +n04590263 +n03223686 +n04318787 +n03592773 +n03073977 +n03988170 +n04360798 +n02974348 +n03443149 +n03821518 +n02864593 +n03637181 +n04402449 +n03733131 +n04436329 +n04119751 +n04433585 +n04045644 +n03437941 +n04436185 +n03366974 +n03601840 +n02970685 +n03937931 +n03955489 +n04123740 +n03002096 +n02835915 +n02910145 +n02770830 +n04325041 +n03288886 +n04485082 +n04275175 +n03704549 +n03801760 +n02943871 +n03262809 +n02759257 +n04009801 +n03340723 +n03643253 +n03656484 +n03838298 +n03087366 +n02943241 +n02709101 +n03094159 +n04355933 +n03309465 +n03333711 +n03395859 +n03987376 +n03049782 +n04403413 +n04583212 +n03967396 +n04147495 +n03733925 +n04565375 +n03467068 +n03231160 +n02708711 +n03813176 +n03852280 +n03739693 +n03575958 +n02981911 +n03308152 +n04419073 +n04089836 +n04383015 +n03070193 +n03760944 +n02670382 +n04340521 +n03709206 +n03092656 +n04403638 +n03760671 +n02751295 +n03293863 +n03852688 +n04044716 +n04070207 +n03333129 +n04068601 +n02978478 +n03822767 +n04145863 +n03715114 +n03279508 +n03332989 +n03667829 +n02841506 +n03484931 +n03850053 +n03082280 +n03692522 +n03868643 +n03247083 +n04070415 +n04053508 +n02794156 +n03904782 +n04421872 +n02751215 +n03735637 +n03429288 +n04437953 +n02710600 +n02939866 +n03991837 +n04382880 +n04141975 +n04392113 +n03753077 +n03554460 +n04180888 +n04118776 +n02699915 +n04029734 +n03736470 +n04559730 +n04518343 +n02710429 +n03424862 +n04001499 +n03718335 +n04274985 +n02753394 +n03046257 +n04555897 +n04355338 +n04438304 +n03544143 +n03452594 +n03196217 +n02694662 +n04548280 +n02708093 +n03909406 +n03145147 +n03197337 +n02708433 +n03973839 +n04607869 +n04328186 +n03891332 +n03026907 +n04528968 +n03759661 +n02777100 +n02708555 +n03277459 +n03272810 +n03841143 +n02702989 +n04273796 +n03842986 +n04561287 +n04541320 +n03708843 +n04449966 +n03467984 +n02879718 +n02880393 +n02892948 +n03624134 +n04373894 +n04346157 +n04008634 +n02715712 +n03343853 +n04177041 +n02689274 +n03423306 +n03875955 +n02950826 +n02759963 +n03948459 +n04502851 +n03732020 +n03803116 +n04090263 +n04076284 +n04171459 +n02760429 +n03416775 +n03695857 +n04171629 +n02760855 +n02749479 +n02760658 +n03701391 +n04347519 +n02923682 +n04517211 +n03607659 +n04450133 +n03073296 +n03178674 +n04086273 +n03427202 +n03363749 +n03802007 +n04250224 +n04585980 +n02961451 +n03136369 +n03687928 +n03615790 +n02812949 +n03699591 +n03158885 +n04054361 +n03327691 +n02904640 +n02987492 +n04121511 +n03292475 +n03375575 +n02916350 +n02950943 +n03080633 +n04015908 +n02745611 +n03178000 +n03706229 +n03080497 +n02841315 +n04272054 +n04009552 +n04403925 +n03443912 +n04356056 +n04238617 +n03399761 +n03795976 +n03864692 +n03555662 +n02963503 +n04376876 +n04317175 +n03643149 +n03858183 +n04364545 +n04083800 +n03514451 +n03938037 +n04056180 +n03302671 +n04477387 +n04080833 +n04251144 +n03868863 +n02731629 +n03876231 +n04287747 +n02889646 +n03484576 +n03323703 +n04162706 +n03652932 +n04125853 +n02891188 +n03803284 +n02999936 +n02865665 +n02910353 +n03627232 +n03041114 +n03051249 +n02982599 +n03940256 +n03229244 +n04153751 +n04238321 +n02928608 +n04159354 +n03887185 +n03682487 +n04431745 +n03683606 +n03038281 +n03043958 +n02960690 +n03804744 +n04445327 +n03836451 +n02881906 +n02880189 +n03644858 +n03497352 +n04095342 +n03476313 +n04227900 +n03499354 +n02903126 +n02860640 +n02796318 +n04127249 +n04197781 +n03057541 +n04554871 +n03423719 +n03503477 +n03855604 +n03874599 +n04136800 +n03645011 +n03075370 +n03223162 +n03886762 +n02915904 +n03476684 +n03551084 +n03208938 +n03250089 +n04505470 +n04036303 +n03085013 +n03928814 +n03033362 +n04168199 +n03589513 +n03098140 +n04401949 +n03034244 +n03968293 +n03275681 +n03163222 +n04470953 +n04257986 +n02715229 +n02955247 +n04269270 +n04072960 +n04364160 +n04257790 +n02810471 +n04414675 +n03048883 +n04595855 +n03084420 +n03577090 +n03778817 +n04004210 +n03578656 +n03125057 +n03033986 +n03788047 +n03274561 +n03261776 +n03759954 +n03691459 +n04402580 +n03505667 +n03087816 +n02963692 +n04502670 +n02917377 +n04390873 +n04599124 +n04349401 +n03846772 +n03204955 +n04041747 +n04404817 +n03207305 +n04142999 +n04610274 +n04540547 +n03359285 +n03651388 +n03870980 +n04013729 +n04258138 +n03773035 +n03485198 +n02965783 +n04059947 +n03861842 +n02921756 +n02761834 +n04201064 +n03343737 +n04058594 +n04143140 +n04494204 +n03211117 +n03918737 +n03221351 +n04464615 +n03793489 +n02714751 +n03506727 +n02823124 +n04484432 +n03913343 +n03085219 +n03782190 +n04152593 +n03196598 +n03676759 +n03361380 +n04588739 +n03187268 +n02940570 +n03085602 +n02769075 +n02988066 +n03027250 +n03070059 +n03525454 +n04538552 +n02948557 +n03031152 +n02947818 +n03746005 +n03746155 +n02935017 +n03851787 +n03706653 +n03744276 +n03708036 +n04063868 +n02763306 +n03079230 +n04533946 +n02988679 +n02988486 +n02757061 +n03492542 +n03209910 +n03359436 +n04052757 +n04534359 +n02979399 +n04391838 +n03924069 +n03694639 +n04178190 +n03636248 +n03665366 +n03358172 +n03640988 +n02948072 +n03818343 +n04534895 +n04384910 +n03423877 +n03844045 +n03549897 +n03370387 +n04335886 +n04286575 +n03272383 +n03590841 +n03018712 +n03359137 +n03665924 +n03911767 +n03503997 +n04107743 +n04339879 +n03318294 +n04148703 +n04160847 +n03824713 +n02852173 +n04456115 +n03365374 +n03401129 +n03442597 +n03187037 +n04529108 +n03975232 +n03668279 +n03482523 +n04371050 +n03772584 +n04164757 +n03544238 +n04288272 +n04116098 +n03066359 +n02886321 +n03525074 +n04585745 +n03281145 +n03126707 +n04575824 +n03178430 +n03733281 +n03078287 +n03820728 +n03440216 +n04080138 +n03302938 +n03738241 +n03085915 +n04141712 +n04082886 +n04545858 +n04041544 +n04400289 +n04402746 +n03578055 +n03580845 +n04404412 +n04137897 +n04365328 +n03072201 +n03681477 +n04358491 +n03300216 +n04595028 +n04008385 +n03674440 +n04366116 +n03401279 +n03957315 +n04488202 +n04555700 +n03206908 +n02893692 +n03210683 +n03991062 +n02920658 +n04074185 +n03147509 +n02774152 +n02978881 +n03256032 +n02773037 +n03733805 +n03438257 +n03875806 +n03733644 +n03291819 +n04183329 +n03935335 +n02801938 +n04179712 +n04139859 +n03994614 +n02946921 +n04576211 +n04600312 +n02839910 +n02949542 +n03779370 +n02964843 +n04533700 +n02975212 +n02974697 +n04531098 +n03233905 +n04060904 +n03871083 +n04560292 +n02883344 +n03062336 +n03920288 +n03456024 +n04176190 +n04499062 +n04350581 +n02880940 +n02978753 +n04050933 +n02927764 +n04130257 +n03775546 +n03984759 +n02997910 +n04263257 +n04023695 +n04103769 +n02682922 +n04254120 +n02754103 +n03571280 +n03174731 +n02815749 +n03629520 +n03063073 +n03002948 +n04397452 +n03216710 +n03301940 +n04207343 +n03055418 +n04083309 +n02769748 +n04122685 +n02816656 +n04134008 +n02970408 +n03883524 +n03253886 +n02870676 +n04452528 +n03709823 +n04026417 +n03235796 +n03291963 +n04124098 +n04122825 +n03993180 +n04204081 +n04446844 +n03414029 +n03619793 +n03958227 +n03445617 +n04235860 +n03469903 +n03461288 +n04284572 +n03972524 +n04544450 +n03321563 +n03521899 +n03898395 +n03372549 +n04496872 +n04559910 +n02918831 +n03676623 +n04249882 +n04206225 +n02823750 +n04119360 +n03443371 +n04592099 +n03062245 +n04131690 +n03914438 +n03883385 +n03050864 +n03482405 +n02893608 +n04204238 +n04582349 +n03764736 +n02823510 +n04255586 +n03904433 +n02946509 +n04103364 +n03791053 +n04170037 +n04509417 +n04543158 +n02804515 +n03484083 +n02766534 +n02834778 +n03538634 +n04467099 +n02959942 +n04482393 +n02740533 +n04065272 +n04464852 +n04252077 +n02916179 +n03684823 +n04335435 +n03791235 +n04465501 +n03384352 +n02740300 +n02739889 +n03256788 +n02946348 +n04520382 +n04211219 +n03193597 +n03272562 +n04389854 +n04465358 +n04310018 +n03193260 +n03193423 +n03506880 +n04490091 +n02704792 +n03389761 +n03790512 +n03444034 +n02958343 +n04252225 +n03345487 +n04520170 +n04467665 +n04474035 +n03417042 +n03632852 +n04461696 +n03256166 +n04465666 +n03930630 +n03173929 +n03796401 +n03896419 +n03977966 +n02871314 +n04466871 +n03785016 +n02814533 +n03680512 +n03777568 +n03268790 +n03770679 +n03100240 +n03079136 +n02930766 +n04201733 +n04037443 +n03498781 +n04097373 +n02831335 +n04285965 +n04166281 +n03594945 +n03670208 +n03141065 +n02701002 +n04516354 +n04322801 +n04347119 +n03870105 +n03543394 +n04285008 +n03119396 +n03122295 +n02970849 +n03538406 +n03255899 +n03599486 +n03981924 +n03868242 +n04397027 +n03648431 +n04176068 +n02797295 +n04204347 +n03490119 +n02835271 +n04126066 +n04026813 +n03792782 +n02968473 +n03435991 +n02912557 +n04297098 +n03389889 +n02775039 +n03393912 +n03895866 +n02932523 +n02885108 +n04389521 +n03828020 +n04020912 +n03200357 +n04246855 +n04065789 +n02747177 +n03678558 +n04134523 +n03935116 +n02900705 +n03078995 +n03210372 +n03619650 +n04548362 +n02962843 +n03986355 +n03214582 +n03031012 +n04200000 +n03468821 +n02755140 +n03683995 +n04608435 +n04556533 +n02774630 +n03438863 +n03487533 +n04137217 +n02773838 +n04491769 +n03498441 +n03420345 +n04570815 +n02967294 +n03986949 +n03865371 +n04518764 +n02863750 +n03355768 +n02881193 +n03633091 +n02876657 +n02877266 +n03990474 +n03950228 +n02808440 +n03786901 +n02909870 +n03241496 +n03129001 +n04591887 +n04001265 +n04493381 +n03572321 +n04438897 +n02801525 +n03784270 +n02758960 +n03029445 +n02795169 +n04388743 +n03593526 +n02993368 +n04447028 +n03350204 +n04149083 +n04263336 +n04246060 +n03983396 +n04557648 +n03603722 +n02985963 +n03449451 +n03937543 +n02962061 +n03359566 +n02823428 +n03571625 +n03174450 +n04579056 +n03140431 +n04591713 +n02960903 +n03923379 +n04579145 +n04560804 +n03521675 +n03295246 +n04422727 +n02952374 +n04518132 +n03709363 +n03595409 +n04139140 +n04398044 +n03259401 +n04516214 +n04324297 +n03612814 +n02939185 +n03915118 +n04397768 +n03063689 +n03064250 +n04132985 +n04399158 +n04225031 +n03543603 +n03379343 +n03797390 +n03693707 +n04389430 +n03063599 +n04443766 +n02824058 +n02836174 +n02843158 +n04553703 +n02788572 +n02823335 +n04592005 +n03610418 +n03426134 +n04560113 +n04173046 +n02732072 +n04078574 +n04562935 +n04049303 +n02951703 +n02705429 +n03101664 +n02815834 +n04516116 +n03725600 +n04522168 +n03133415 +n03593122 +n03960374 +n04476259 +n02982515 +n03259009 +n03004275 +n04131929 +n03416900 +n03565830 +n03543735 +n03858085 +n04255163 +n02747802 +n03871628 +n02919414 +n03167978 +n02778456 +n03500389 +n03870672 +n02782681 +n02971356 +n03064758 +n04200258 +n04253057 +n03908618 +n03127925 +n02786331 +n04589325 +n03014705 +n04340750 +n02998003 +n03710193 +n02978055 +n02836392 +n03871724 +n04452615 +n04462011 +n03064350 +n03535024 +n04477548 +n02989099 +n02977438 +n04125257 +n02976939 +n04125021 +n04469813 +n03002341 +n04214282 +n04019101 +n04172342 +n03538179 +n04524313 +n04231693 +n04103918 +n04467307 +n04196502 +n03678362 +n03306385 +n04212165 +n04468005 +n02924116 +n03680942 +n03394272 +n03896233 +n04349306 +n03711044 +n03394480 +n03078802 +n02917067 +n04487081 +n03769881 +n04146614 +n04310157 +n02918964 +n04099429 +n03764276 +n03773504 +n03125870 +n04235291 +n03478589 +n04389033 +n03886053 +n03919096 +n03549199 +n02686568 +n04530566 +n04264914 +n03547229 +n03510583 +n04308084 +n03666917 +n03491032 +n03439814 +n03512147 +n04552348 +n02691156 +n02759387 +n02867715 +n02704645 +n04012084 +n02690373 +n02842573 +n03365231 +n03595860 +n03335030 +n04308273 +n04160586 +n02686121 +n04583620 +n03604311 +n03596543 +n04308397 +n03577672 +n02692877 +n02850950 +n02782093 +n03541923 +n02858304 +n04476116 +n04610013 +n04194289 +n04128837 +n02792409 +n03662601 +n03977592 +n03447447 +n04158807 +n02792552 +n04095210 +n04495843 +n04024983 +n03939178 +n04244997 +n03329663 +n04409128 +n02947660 +n03344393 +n03790230 +n03236423 +n03981566 +n03545470 +n04229480 +n02951358 +n03199901 +n04037964 +n03105306 +n04612504 +n03436891 +n03602081 +n04115456 +n03609235 +n03861430 +n03254374 +n04038231 +n04038338 +n04273569 +n03859170 +n02932891 +n03552749 +n04197110 +n04606251 +n03896103 +n03947888 +n03668488 +n03541269 +n04309348 +n02965300 +n04224543 +n04552696 +n03673027 +n03698604 +n02965216 +n03141327 +n03874138 +n04317063 +n02878222 +n03095699 +n02784124 +n03845190 +n04347754 +n03466493 +n03397266 +n02812201 +n03466600 +n02687172 +n03718212 +n03180504 +n02755529 +n03811295 +n04612373 +n03045228 +n03327133 +n04242408 +n03612010 +n03186285 +n04128499 +n02793199 +n04147183 +n04587327 +n04483307 +n02981792 +n02982416 +n04266014 +n04264765 +n03218198 +n02860847 +n02861022 +n04336792 +n03122202 +n06271778 +n06255081 +n06263609 +n06276697 +n06272290 +n06276501 +n06277280 +n06281040 +n06277135 +n06278338 +n06278475 +n06274760 +n06272803 +n06272612 +n06263369 +n06266417 +n06595351 +n06267145 +n06596607 +n06596727 +n06596364 +n06596474 +n06267893 +n06267564 +n06267655 +n06266633 +n06267991 +n03938244 +n03872495 +n04135315 +n02823964 +n03408444 +n02967626 +n04053677 +n04151940 +n04453910 +n03380867 +n04014297 +n03045698 +n04605726 +n04513827 +n03050026 +n03724870 +n03341153 +n03366823 +n03058107 +n02952237 +n03357376 +n03221059 +n03376279 +n03956623 +n03261603 +n02944459 +n04201297 +n02954938 +n03717622 +n03661340 +n04041243 +n02877765 +n03825788 +n03047690 +n04199027 +n02735538 +n02872752 +n03361550 +n04241394 +n03865949 +n04122578 +n04239786 +n03027625 +n04124370 +n04272389 +n02904927 +n04593524 +n04545748 +n02855701 +n02713364 +n03041449 +n03411079 +n03680355 +n04120489 +n03868406 +n02882894 +n03967270 +n04022332 +n04133789 +n03025250 +n04027706 +n04386664 +n03364008 +n03297103 +n03600475 +n02925666 +n04228581 +n03521544 +n04089666 +n04116294 +n03516844 +n04542715 +n03124043 +n03798061 +n02873733 +n03067518 +n03046133 +n04554211 +n04444749 +n03797896 +n04192858 +n02888270 +n04151581 +n04187233 +n02826068 +n04181718 +n04191943 +n04281375 +n04416005 +n04105068 +n03314608 +n03530910 +n04187061 +n02955065 +n03725035 +n03315644 +n03142679 +n02937958 +n02739668 +n02840245 +n02840619 +n03546766 +n02851099 +n03673767 +n03959701 +n03539433 +n02740764 +n02895154 +n03513376 +n02950632 +n03623338 +n03929855 +n04130907 +n04589890 +n03347037 +n04590553 +n03788365 +n03637318 +n03889871 +n03652729 +n02825657 +n04172776 +n02843684 +n02951843 +n03610524 +n02763901 +n04507155 +n03415252 +n03409591 +n04357121 +n03718789 +n03220513 +n03522100 +n04435653 +n03546235 +n04523525 +n04234887 +n03413684 +n04417672 +n03148727 +n03435593 +n03847471 +n02796207 +n04087709 +n03527444 +n04141327 +n04207763 +n03548086 +n04423845 +n03213538 +n03657121 +n03424325 +n03314378 +n04229816 +n02983189 +n02862048 +n04192698 +n03000247 +n02916936 +n03112719 +n03146219 +n02933340 +n04045255 +n02873520 +n04589190 +n03592669 +n03151077 +n04211356 +n04525584 +n04590129 +n04102285 +n04418357 +n04209239 +n02925107 +n02890513 +n03436549 +n03291741 +n02992368 +n07248320 +n03590306 +n03958752 +n04207151 +n03885293 +n03654576 +n02767665 +n03114379 +n02785648 +n02876084 +n04240752 +n02820210 +n04236377 +n02851939 +n03309356 +n04231272 +n04162433 +n02786058 +n04369025 +n02979836 +n03267821 +n04033995 +n02683323 +n02849154 +n02822220 +n03731483 +n03898633 +n03266749 +n03128427 +n03123553 +n04034262 +n04046400 +n03688405 +n04118021 +n03223299 +n03727837 +n04144539 +n04183217 +n03998194 +n02904233 +n04297847 +n04066270 +n02908773 +n03353951 +n03445326 +n04528079 +n03875218 +n03805725 +n03437430 +n03115897 +n03284743 +n04525417 +n03342015 +n03284886 +n03285578 +n03844233 +n04557308 +n03646020 +n04581102 +n03261019 +n03973402 +n03642444 +n04450994 +n04084889 +n04412097 +n03337383 +n03729308 +n03970546 +n03802393 +n04395024 +n04525038 +n02809105 +n03615406 +n02828427 +n04123567 +n03188725 +n04539794 +n03253796 +n03013850 +n03115400 +n04459610 +n03132666 +n03885194 +n03019938 +n03326795 +n03115180 +n04525191 +n04138261 +n03625355 +n04137355 +n04003856 +n03356982 +n04568841 +n03409297 +n02944579 +n04605163 +n02977330 +n04395106 +n03779128 +n02904803 +n04524941 +n04198453 +n02878425 +n03703862 +n03819595 +n03877351 +n04613015 +n03914831 +n03932670 +n03785237 +n04414476 +n04056932 +n02675219 +n03106722 +n03917814 +n03016868 +n02922798 +n04432662 +n02802990 +n03631177 +n04189282 +n03435743 +n03983612 +n03175189 +n03357267 +n04184316 +n02942460 +n03836906 +n03233123 +n03430091 +n03855214 +n03386726 +n03437741 +n04599235 +n04350458 +n04383839 +n03653110 +n04502502 +n03854421 +n02952109 +n03298858 +n03160740 +n03843438 +n04393549 +n02903852 +n03947798 +n03529444 +n04482297 +n03227317 +n03595523 +n03429914 +n04496614 +n03016609 +n03485794 +n03463666 +n03258330 +n03207743 +n04459362 +n02786198 +n03471190 +n02834397 +n04127904 +n03897943 +n03490006 +n03887697 +n03207835 +n03381776 +n03383099 +n04278447 +n03505383 +n04455652 +n03712337 +n02782602 +n03598151 +n03775747 +n03410571 +n03696568 +n04307767 +n03645577 +n03358380 +n04208065 +n03809603 +n02820556 +n03703730 +n03938522 +n04045397 +n03663531 +n03662719 +n03703945 +n03662887 +n04326084 +n02897820 +n14943580 +n14785065 +n15074568 +n14820180 +n04035912 +n03766935 +n04313628 +n03530511 +n03460297 +n03149686 +n03455488 +n03344642 +n03796522 +n03043693 +n02681392 +n04339638 +n15102455 +n04234455 +n03341297 +n04453390 +n14908027 +n14976759 +n03111177 +n03282401 +n03451798 +n03292603 +n03815149 +n03723267 +n02892304 +n07621618 +n02732572 +n03178782 +n02681518 +n03397087 +n03635108 +n04395651 +n03762602 +n03282591 +n06883725 +n03516367 +n04682462 +n03354903 +n02788021 +n04458633 +n03140292 +n03362890 +n05244934 +n11487732 +n03597469 +n03397532 +n03649161 +n03914106 +n02787435 +n03030262 +n02685082 +n02887970 +n02852043 +n03909020 +n03814906 +n03436075 +n03899328 +n04096066 +n03895293 +n04215402 +n04461570 +n03904183 +n03519981 +n02969323 +n04426618 +n04466613 +n03215508 +n03306610 +n02744323 +n02762508 +n02758863 +n04335209 +n04334599 +n03948242 +n03539678 +n02680512 +n03089014 +n03895585 +n04493505 +n04244379 +n04250850 +n04562496 +n02984469 +n02795528 +n03944672 +n03533014 +n04385536 +n03231912 +n03147280 +n04257684 +n04497962 +n04298661 +n03415749 +n02981024 +n04048441 +n04391569 +n02784218 +n03572107 +n02680337 +n03957420 +n02992795 +n03506028 +n03438071 +n04440749 +n02739427 +n04040247 +n02971167 +n04381994 +n04087432 +n03153375 +n03438661 +n03527149 +n03963198 +n04284002 +n04380346 +n03383948 +n04284438 +n04263502 +n04398688 +n04350769 +n04597913 +n03557270 +n04381073 +n03180384 +n02976249 +n02928049 +n04307986 +n04380255 +n02973805 +n02687992 +n04406817 +n02693246 +n02692232 +n03745146 +n04329190 +n04306080 +n04551055 +n03452449 +n03131669 +n03768916 +n03214253 +n03587205 +n03406966 +n03093574 +n03672352 +n03051540 +n02729837 +n03655720 +n03456186 +n02855925 +n03825080 +n04015204 +n03859495 +n03815482 +n03625943 +n03692379 +n02728440 +n03068998 +n03763968 +n03502509 +n03877472 +n03419014 +n02742322 +n04596852 +n03863108 +n03441112 +n02671780 +n02846141 +n03381126 +n02756098 +n04059157 +n02814774 +n03746330 +n04335693 +n04241249 +n04194127 +n03863262 +n04001845 +n02738859 +n03386870 +n03216402 +n02730930 +n04207903 +n03121897 +n03015478 +n03268645 +n04266375 +n03623198 +n03450516 +n04532106 +n03010795 +n02669723 +n02811719 +n03324928 +n03239259 +n03615563 +n03513137 +n03531281 +n04498389 +n03497657 +n02954340 +n03124474 +n04432203 +n03379051 +n03492922 +n03127747 +n04356595 +n03404360 +n03124170 +n02817516 +n02859184 +n04248507 +n03325941 +n02987379 +n04259630 +n04482177 +n02818135 +n03984643 +n02869837 +n03950899 +n02881757 +n03766322 +n03046029 +n03937835 +n02799323 +n03103563 +n04209133 +n03610682 +n02776825 +n03331077 +n04387095 +n02831237 +n04232153 +n03049924 +n04228693 +n04556408 +n02807133 +n03787032 +n04612026 +n02816768 +n03502331 +n04143897 +n04104770 +n03188531 +n04605572 +n04097866 +n04574067 +n03655072 +n04230808 +n04508163 +n04172904 +n04531873 +n04197391 +n03863923 +n03540090 +n02922578 +n04488530 +n04489008 +n04332580 +n03404149 +n03816005 +n04370774 +n03657511 +n04371563 +n03487642 +n04046277 +n04350905 +n04370048 +n03450734 +n03314884 +n03826039 +n02998841 +n03719743 +n03797182 +n03505504 +n04495698 +n03325584 +n04325704 +n03520493 +n03615655 +n03237992 +n03617480 +n02667093 +n02807616 +n03410938 +n04269822 +n03866082 +n03454442 +n03770439 +n03617312 +n03732458 +n02780815 +n03205669 +n04136333 +n03534580 +n03920737 +n02892767 +n03387323 +n04223299 +n03421324 +n03132776 +n04508949 +n02863014 +n02944146 +n04514241 +n03013580 +n04508489 +n03112869 +n03885788 +n04103665 +n03673450 +n03688192 +n02930214 +n04509171 +n03824381 +n02854739 +n04426427 +n02837887 +n02901114 +n03885028 +n03234164 +n04602956 +n03629231 +n03595614 +n03163381 +n03978966 +n03057021 +n03045337 +n04252560 +n04363777 +n03254046 +n04187970 +n03398228 +n03630383 +n03456665 +n03589791 +n04049405 +n02957008 +n04123448 +n03404251 +n03751269 +n04222307 +n02867966 +n03902756 +n04368496 +n03228254 +n02864504 +n03891051 +n03844815 +n04479046 +n03770954 +n04122492 +n03980874 +n04445154 +n04445040 +n03607923 +n04173907 +n04497570 +n04186455 +n02936402 +n04205318 +n03877674 +n04370288 +n04132158 +n02896442 +n03019434 +n04233715 +n03600285 +n03903733 +n03688605 +n03594734 +n03107488 +n03660124 +n04337287 +n02825442 +n02910864 +n03543112 +n02831595 +n03653833 +n03815615 +n03128085 +n02865351 +n04591157 +n02883205 +n02847631 +n03710721 +n04371430 +n02837789 +n03226538 +n03943920 +n04222470 +n03885669 +n02925519 +n04427715 +n04504141 +n04502197 +n02963159 +n04370456 +n04021028 +n04453666 +n03464053 +n02944075 +n03236735 +n02861387 +n02854926 +n03480579 +n03062015 +n04136161 +n02936570 +n04355511 +n03013438 +n04334105 +n03450230 +n03604400 +n03205574 +n02898585 +n04397645 +n02781121 +n03429682 +n03775071 +n03616979 +n02827606 +n03405595 +n03781683 +n03527565 +n02972397 +n03540267 +n04434932 +n04254777 +n04323819 +n03885904 +n03710637 +n02752496 +n04378956 +n03622931 +n02736798 +n03836976 +n03026506 +n03384891 +n03289985 +n03859958 +n02726017 +n03113657 +n03320519 +n03113835 +n03398153 +n04285803 +n02669534 +n03206718 +n03476083 +n03201776 +n02780704 +n03201638 +n03239054 +n02683454 +n04459018 +n04584207 +n03237416 +n02887489 +n02752615 +n03528263 +n03251766 +n04517823 +n03584829 +n04488857 +n03150511 +n04580493 +n04179913 +n04174101 +n03620052 +n03534776 +n04475631 +n04309833 +n03207941 +n04070727 +n04554684 +n03102654 +n03273913 +n03557590 +n03170635 +n04442312 +n03761084 +n04442441 +n03063338 +n03543254 +n04542943 +n03212114 +n03297495 +n04330340 +n03862676 +n03378174 +n03557692 +n03102371 +n03273740 +n03425595 +n04003241 +n02905036 +n04111531 +n03259280 +n03425241 +n03483316 +n03050655 +n04277826 +n04496726 +n04607242 +n02808304 +n03219010 +n04499446 +n02821030 +n03938725 +n04188179 +n04439712 +n03971218 +n03223553 +n02856463 +n03250279 +n03882058 +n03635668 +n02846511 +n04251791 +n04189816 +n02731900 +n04225987 +n04214046 +n04149813 +n04543996 +n03502200 +n03005285 +n03969259 +n04254009 +n04446521 +n04208936 +n04559451 +n03371875 +n03993053 +n04108268 +n03106110 +n03644378 +n02919890 +n04290079 +n03107046 +n04426788 +n02874537 +n04581829 +n03641569 +n03367545 +n04598965 +n04605321 +n00004475 +n00006484 +n12739332 +n00017222 +n00015388 +n01326291 +n11537327 +n00007846 +n12992868 +n00005787 +n12172906 +n13083586 +n13123431 +n11536673 +n11552806 +n13083023 +n13100156 +n12476510 +n11545524 +n11552386 +n13121544 +n12205694 +n13100677 +n13103136 +n13085113 +n13084834 +n13134302 +n13084184 +n12477163 +n12477583 +n12477747 +n12480895 +n12479537 +n12481458 +n11547562 +n11545714 +n13221529 +n13220122 +n13223265 +n13223588 +n13223710 +n12953206 +n13194572 +n13205058 +n12961879 +n12953484 +n13186654 +n13197274 +n13173882 +n13229543 +n13192625 +n13185269 +n13193642 +n13207335 +n13183056 +n13200651 +n13195341 +n13206817 +n13199970 +n12957924 +n13198914 +n13199717 +n13215586 +n13190747 +n13193856 +n13194036 +n11665372 +n11596108 +n12694486 +n11666854 +n11669921 +n11672400 +n12606438 +n12799776 +n11736694 +n12008487 +n11955896 +n12879527 +n12884260 +n12034141 +n12290748 +n12026476 +n12833149 +n11892817 +n12914923 +n11969607 +n11794024 +n12026018 +n11672269 +n12830222 +n11811473 +n12022054 +n11971406 +n11826198 +n12950314 +n11857875 +n11988596 +n11939699 +n11915214 +n11821184 +n12293723 +n11814584 +n11725015 +n12890265 +n11733312 +n11859472 +n11971248 +n11888800 +n11971927 +n12898774 +n11810358 +n11904109 +n11943407 +n11978233 +n12683407 +n12950126 +n11726707 +n11813077 +n11889619 +n11905749 +n11812910 +n11900569 +n12020184 +n11960245 +n11859737 +n12909421 +n12041446 +n12909917 +n11992806 +n11807979 +n11925303 +n11971783 +n11939491 +n11918473 +n11989869 +n11727091 +n11793779 +n11891175 +n11792341 +n11839568 +n11943660 +n11947802 +n12475242 +n11815491 +n12480456 +n11839823 +n11732567 +n12475035 +n12360108 +n12833985 +n11941924 +n11883328 +n11719286 +n11736851 +n11887119 +n12001707 +n11950345 +n11892637 +n11805956 +n11892029 +n11806219 +n12008252 +n11918286 +n11962272 +n12093600 +n12836862 +n12093329 +n11733054 +n12020507 +n11931918 +n11958080 +n12877838 +n11812094 +n11811706 +n11923174 +n12023726 +n12023407 +n11923637 +n11990313 +n11915899 +n12030908 +n12015221 +n11990167 +n11981192 +n11980318 +n11972759 +n11921395 +n12294124 +n12295796 +n12294723 +n12294331 +n12294871 +n12296432 +n12295033 +n11726269 +n11725821 +n11725973 +n12891305 +n12891643 +n11978713 +n11979527 +n11978961 +n11979715 +n12683571 +n12683791 +n11901759 +n11908549 +n11901294 +n11903671 +n11901977 +n11902389 +n11908846 +n11901597 +n11905392 +n11902200 +n11906917 +n12044467 +n12052787 +n12056217 +n12075830 +n12055516 +n12083113 +n12047884 +n12048056 +n12080820 +n12070381 +n12061380 +n12080395 +n12061614 +n12074408 +n12070583 +n12071744 +n12049282 +n12047345 +n12064389 +n12075010 +n12052447 +n12053405 +n12050533 +n12077944 +n12086539 +n12064591 +n12058822 +n12046028 +n12083591 +n12073991 +n12043444 +n12086012 +n12073554 +n12046815 +n12063639 +n12058630 +n12084890 +n12070016 +n12076223 +n12069679 +n12048399 +n12049562 +n12076577 +n12086192 +n12074867 +n12075299 +n12072722 +n12066018 +n12084555 +n12070712 +n12079963 +n12065316 +n12059314 +n12085664 +n12050959 +n12062468 +n12085267 +n12078172 +n12057211 +n12057447 +n12056758 +n12056601 +n12043836 +n12043673 +n12067193 +n12066630 +n12062781 +n12062626 +n11808299 +n11808721 +n11808932 +n11808468 +n11809594 +n11809094 +n11727358 +n11727738 +n11727540 +n11816649 +n11816336 +n11816829 +n11816121 +n11815918 +n11815721 +n12362274 +n12362668 +n12361946 +n11950877 +n11950686 +n11961100 +n12020736 +n12020941 +n11934616 +n11933546 +n11934807 +n12879963 +n12015959 +n11836722 +n11860555 +n12258885 +n11980682 +n12016567 +n11737534 +n11965627 +n11991263 +n11989393 +n12006766 +n12887293 +n12937130 +n12291959 +n11972291 +n11927215 +n12012111 +n11970586 +n11963932 +n11966215 +n11966083 +n12006930 +n12007196 +n11600372 +n11599324 +n11603246 +n11602873 +n11603835 +n11601333 +n12484784 +n12610328 +n11791569 +n11714853 +n13122364 +n11715430 +n11715678 +n12801781 +n11728099 +n11786131 +n12150028 +n12801520 +n11789066 +n11792742 +n12152532 +n12151615 +n12152722 +n11733548 +n11720353 +n12810595 +n12342299 +n13238375 +n12867826 +n12665048 +n11973341 +n12312728 +n11818069 +n12848499 +n11779300 +n12822955 +n12816508 +n12719684 +n12350758 +n12095020 +n11861641 +n11962667 +n12870891 +n12939282 +n12812478 +n12031927 +n12023108 +n12858150 +n12861892 +n12841007 +n12212361 +n12869061 +n12906214 +n12910285 +n12486574 +n12090890 +n12702948 +n12437513 +n11968931 +n11817914 +n11772408 +n12932173 +n12817694 +n11910460 +n12603449 +n12939874 +n12002428 +n12015525 +n11807108 +n12835331 +n12168565 +n12840362 +n12352287 +n11969166 +n11968704 +n12821895 +n12344283 +n11866248 +n11995092 +n12622875 +n11735053 +n12548280 +n13150894 +n12685431 +n12387633 +n12171966 +n12796022 +n12934036 +n12443323 +n12870535 +n12682668 +n12778605 +n12623077 +n12836212 +n11982115 +n12003696 +n12005656 +n12098403 +n12606545 +n11902709 +n12882945 +n12785889 +n11986511 +n12682411 +n12469517 +n12029635 +n12860365 +n12552309 +n11977303 +n11825351 +n12836337 +n12844939 +n12925179 +n11926833 +n12604228 +n11752578 +n12855042 +n11956850 +n12092262 +n12506991 +n12882779 +n11747468 +n12385429 +n12822115 +n12821505 +n12607456 +n12819728 +n12817464 +n12811027 +n12024445 +n12573474 +n12864545 +n11949402 +n11868814 +n11953038 +n12599435 +n12840749 +n13233727 +n12342498 +n12795555 +n11984542 +n12847008 +n12719944 +n11855274 +n12095647 +n12441183 +n12942572 +n12602980 +n12684379 +n12441390 +n12785724 +n11916696 +n12574320 +n12092417 +n12036939 +n11700058 +n12845413 +n11824146 +n11910271 +n11916467 +n11807525 +n12101870 +n11939180 +n12353754 +n12104501 +n12794985 +n12355760 +n12793015 +n12932966 +n12931542 +n12889713 +n12849061 +n11722466 +n11720643 +n12665857 +n12665271 +n11785668 +n11780148 +n11784497 +n11782036 +n11786539 +n11782761 +n12858871 +n12858397 +n11959632 +n11959862 +n12911673 +n12911440 +n12091213 +n12091550 +n12091377 +n12091953 +n12703557 +n12703190 +n12703383 +n12437930 +n12437769 +n12352639 +n12352844 +n12352990 +n12344700 +n12344483 +n12687957 +n12685831 +n12687698 +n12687462 +n12686274 +n12686077 +n12687044 +n12686676 +n12388989 +n12388143 +n12387839 +n12388858 +n12390099 +n12389501 +n12390314 +n12782915 +n12779603 +n12781940 +n12782530 +n11753700 +n11753355 +n11753143 +n12856680 +n12855494 +n12540250 +n12515711 +n12575322 +n12575812 +n12556307 +n12539306 +n12557681 +n12558425 +n12866162 +n12865824 +n12865037 +n12866635 +n12865562 +n12866002 +n11879054 +n11878283 +n11875691 +n11876634 +n11877193 +n11876803 +n11876432 +n11870418 +n11875938 +n11894327 +n11881742 +n11870747 +n11896722 +n11879722 +n11895092 +n11894770 +n11882074 +n11882426 +n13235503 +n13234678 +n12039317 +n12037691 +n12038406 +n12038585 +n12148757 +n12102133 +n12121610 +n12139575 +n12113195 +n12112918 +n12116429 +n12141495 +n12133462 +n12108871 +n12104238 +n12141167 +n12115180 +n12112008 +n12128071 +n12146311 +n12124627 +n12110778 +n12129134 +n12134025 +n12145477 +n12142085 +n12135898 +n12137120 +n12127030 +n12127768 +n12127460 +n12356023 +n12357485 +n12793494 +n12794135 +n12849279 +n12849416 +n12847374 +n12517642 +n11731659 +n12813189 +n11838916 +n12517445 +n12513172 +n12823859 +n12566954 +n13148208 +n12158798 +n12485981 +n13237188 +n12826516 +n13120211 +n12580654 +n11769621 +n12824053 +n11769803 +n12383402 +n12823717 +n12157769 +n13144794 +n12371439 +n12159055 +n12160490 +n12158443 +n12160303 +n12159388 +n12160857 +n12161969 +n12827270 +n12828791 +n12827537 +n11788727 +n11789589 +n12571781 +n11792029 +n12384839 +n12384227 +n12384037 +n12164363 +n12166128 +n12165170 +n12164881 +n12164656 +n13146583 +n13145040 +n12509476 +n13112664 +n13104059 +n12655869 +n12546183 +n12671651 +n12215579 +n12901724 +n12938193 +n12680864 +n12329260 +n12924623 +n12659356 +n12788201 +n12343480 +n13142504 +n11830906 +n12504783 +n12659539 +n12214789 +n11699442 +n12217453 +n12574866 +n12374418 +n12249542 +n13118707 +n12215022 +n12342852 +n12762896 +n12306717 +n11769176 +n12805146 +n12519089 +n11754893 +n12772908 +n12624381 +n12482031 +n12243109 +n12223764 +n12170585 +n12230794 +n12791329 +n12674120 +n12917901 +n12237486 +n12185859 +n12681893 +n12905412 +n12899537 +n12899752 +n12806015 +n12011620 +n12922763 +n12651229 +n12303083 +n11928352 +n11926365 +n12223569 +n12791064 +n12311579 +n11834654 +n11760785 +n12749679 +n12489815 +n12666965 +n12929403 +n12902662 +n12620196 +n12237641 +n12625383 +n12244153 +n11774513 +n12520864 +n12516828 +n12849717 +n12485653 +n12790430 +n12788854 +n11924445 +n12632335 +n11947251 +n12099342 +n11931540 +n12545635 +n11778257 +n11924849 +n12367611 +n12602262 +n12328567 +n12328398 +n12629305 +n11907689 +n11940006 +n12546962 +n11925898 +n11947629 +n11948864 +n11948264 +n12368451 +n12369309 +n12368028 +n12307240 +n12307076 +n12483427 +n12483625 +n12482893 +n12483841 +n12173664 +n12173912 +n12171316 +n12174521 +n12171098 +n12177844 +n12174311 +n12178896 +n12179122 +n12676534 +n12676703 +n12675876 +n12920204 +n12921868 +n12621410 +n12622297 +n12245319 +n12244650 +n12244819 +n12521394 +n12530818 +n12849952 +n12850336 +n12850168 +n12495146 +n12570972 +n12196129 +n13107694 +n12202936 +n13111881 +n13103877 +n12409231 +n12765115 +n12265600 +n12409470 +n12713866 +n12281241 +n11709205 +n12189429 +n12562785 +n12284821 +n12401335 +n12570394 +n11759224 +n12286988 +n12491826 +n12527738 +n12696492 +n12325234 +n12198286 +n12330891 +n11650558 +n12405714 +n12284262 +n12714755 +n13109733 +n12262553 +n12506341 +n12303462 +n12260799 +n12302071 +n12492106 +n11762433 +n12582231 +n12774299 +n13108481 +n12267411 +n11756092 +n12662772 +n13108662 +n12528549 +n12690653 +n12180885 +n13108545 +n13108323 +n12334293 +n12670758 +n12286826 +n12724942 +n12155009 +n12570703 +n12523475 +n12154773 +n12915811 +n12268246 +n13108131 +n12806732 +n12524188 +n11758799 +n12496427 +n12568186 +n12495895 +n12196527 +n12196336 +n12196694 +n12203529 +n12204175 +n12282933 +n12282527 +n12283542 +n12282737 +n12282235 +n12402051 +n12402840 +n12401684 +n12402348 +n12402596 +n11759853 +n11759404 +n12406715 +n12406488 +n12407890 +n12406902 +n12330469 +n12345899 +n11709674 +n12329473 +n12200143 +n11712282 +n12752205 +n13110915 +n12513933 +n12189987 +n12731401 +n12717224 +n12717072 +n12946849 +n12756457 +n12201580 +n11703669 +n12491017 +n12190410 +n12242409 +n07754894 +n12818346 +n12658308 +n12658118 +n12494794 +n12317296 +n12651821 +n11711764 +n11710136 +n11711537 +n11710393 +n12755225 +n12753573 +n12754648 +n12754781 +n12755727 +n12754981 +n12755387 +n12753007 +n12753245 +n12754003 +n12759273 +n12318378 +n12288823 +n12319204 +n12319414 +n12732491 +n12733647 +n12732756 +n12732009 +n12733870 +n12732966 +n12733218 +n12948495 +n12948251 +n12948053 +n12947313 +n12757303 +n12757458 +n11704093 +n11705171 +n12707781 +n12399132 +n12400720 +n12345280 +n11695599 +n12771192 +n12704343 +n12638218 +n12644902 +n12190869 +n12373100 +n12300840 +n12743352 +n12651611 +n12629666 +n12636224 +n12648045 +n12399384 +n12301180 +n12744387 +n12640839 +n12745386 +n12633638 +n12771390 +n12761284 +n12400489 +n12333530 +n12333771 +n12333053 +n12641413 +n12332030 +n12711984 +n12709901 +n12708293 +n12713063 +n12711596 +n12709103 +n12709688 +n12710415 +n12710295 +n12710693 +n12708654 +n12708941 +n12643313 +n12638753 +n12646740 +n12645174 +n12650379 +n12634429 +n12633994 +n12634211 +n12635532 +n12635955 +n12635744 +n12643473 +n12649065 +n12641931 +n12642200 +n12650556 +n12649539 +n12649317 +n12646605 +n12647560 +n12648888 +n12263987 +n12263038 +n12306089 +n12305986 +n12305293 +n12304703 +n12305475 +n12262018 +n12261808 +n12261571 +n12595699 +n12587132 +n12583126 +n12596709 +n12591351 +n12596849 +n12582665 +n12596148 +n12595964 +n12582846 +n12587803 +n12591017 +n12588320 +n12588780 +n12585629 +n12597134 +n12598027 +n12597466 +n12583401 +n12593994 +n12590232 +n11757653 +n11756669 +n11757851 +n11664418 +n13108841 +n11647703 +n11628793 +n11658331 +n11623105 +n11630017 +n11628456 +n11658544 +n11643835 +n11624531 +n11661372 +n11645914 +n11630489 +n11640132 +n11608250 +n11620673 +n11618861 +n11627168 +n11623815 +n11624192 +n11623967 +n11635152 +n11634736 +n11635433 +n11636204 +n11644462 +n11644226 +n11644046 +n11626585 +n11625632 +n11625003 +n11626826 +n11625804 +n11626152 +n11626409 +n11646694 +n11646167 +n11632167 +n11631854 +n11632619 +n11616662 +n11611561 +n11611356 +n11617631 +n11612575 +n11611758 +n11614713 +n11615387 +n11612018 +n11611087 +n11612923 +n11616486 +n11618290 +n11612349 +n11611233 +n11617090 +n11614250 +n11618525 +n11615026 +n11617272 +n11614039 +n11613459 +n11615967 +n11614420 +n11621029 +n11622184 +n11622591 +n11621281 +n11622368 +n11621950 +n11621547 +n11621727 +n11619455 +n11619227 +n11627512 +n11628087 +n11627908 +n12691661 +n12691428 +n12316572 +n12334891 +n12340755 +n12316444 +n12336727 +n12338796 +n12338454 +n12336973 +n12336092 +n12336224 +n12337617 +n12725521 +n12727101 +n12729521 +n12726670 +n12729315 +n12729729 +n12731029 +n12270741 +n12271643 +n12278650 +n12279458 +n12269241 +n12275489 +n12273114 +n12276872 +n12278371 +n12272883 +n12269652 +n12273768 +n12277800 +n12271933 +n12279772 +n12270946 +n12269406 +n12275675 +n12276628 +n12275131 +n12274358 +n12272239 +n12277578 +n12501202 +n12814643 +n12493208 +n12807773 +n12807409 +n12807251 +n11758122 +n12915568 +n12656369 +n12656685 +n12547215 +n12547503 +n11944196 +n11984144 +n11805544 +n11874081 +n11965218 +n12392549 +n11956348 +n11945514 +n11944954 +n11998888 +n11953884 +n11954345 +n11955153 +n11954161 +n12421137 +n12421467 +n12411461 +n12451915 +n12425281 +n12459629 +n12421683 +n12422129 +n12421917 +n12411922 +n12418221 +n12416073 +n12413165 +n12414932 +n12412606 +n12412355 +n12414035 +n12413880 +n12453186 +n12452836 +n12450344 +n12426248 +n12429352 +n12460697 +n12449526 +n12473840 +n12458550 +n12449296 +n12472024 +n12457091 +n12465557 +n12461466 +n12454159 +n12431434 +n12451240 +n12451399 +n12450840 +n12428076 +n12428747 +n12427566 +n12427184 +n12426623 +n12427757 +n12461109 +n12460957 +n12454705 +n12454949 +n12435777 +n12435649 +n11819509 +n11819912 +n11842204 +n11852028 +n11851258 +n11847169 +n11853813 +n11848479 +n11844892 +n11851839 +n11845557 +n11849871 +n11849983 +n11851578 +n11854479 +n11844371 +n11853356 +n11845793 +n11845913 +n11784126 +n11783920 +n12832315 +n11723770 +n11724109 +n12766869 +n12455950 +n11723227 +n12757816 +n11773987 +n12766595 +n01324610 +n02153109 +n01323599 +n01314781 +n01321579 +n01317541 +n01318894 +n01314663 +n02311060 +n01317916 +n01321230 +n01314388 +n02075612 +n02152740 +n01466257 +n01316949 +n01905661 +n01320872 +n01319467 +n01316422 +n02157206 +n10300303 +n02152881 +n01324431 +n01321854 +n01321770 +n01956344 +n01613615 +n01318279 +n02376542 +n02122948 +n01888045 +n01322343 +n01887896 +n02412440 +n01322221 +n01322604 +n01323261 +n01322685 +n02395694 +n01504344 +n01504179 +n01318381 +n02122580 +n01317813 +n02469472 +n02309337 +n02311617 +n02264232 +n02299157 +n02310585 +n02299505 +n02302620 +n02295390 +n02310717 +n02288268 +n02297442 +n02300797 +n02285801 +n02307325 +n02376791 +n02377063 +n01323355 +n01469103 +n01468712 +n01471682 +n01473806 +n01627424 +n01861778 +n09828216 +n01459791 +n02156871 +n01661091 +n01503061 +n02512053 +n01477525 +n02528163 +n02512938 +n01482071 +n02638596 +n01457852 +n01455778 +n01456756 +n02552171 +n01428580 +n02549989 +n02640857 +n02641379 +n02639087 +n02639605 +n02640242 +n02554730 +n02618827 +n02549248 +n02603317 +n01451426 +n02548247 +n02642107 +n02657368 +n02603540 +n02652668 +n02560110 +n02556846 +n02555863 +n02581957 +n02564270 +n02623445 +n02565573 +n02610664 +n02590702 +n02588286 +n02620167 +n02573704 +n02576223 +n02606384 +n02605316 +n02619550 +n02561108 +n02619165 +n02610066 +n02562315 +n02586543 +n02593019 +n02594250 +n02616851 +n02585872 +n02607862 +n02557182 +n02557318 +n02557749 +n02624167 +n02628062 +n02631475 +n02630281 +n02631041 +n02629230 +n02626762 +n02625258 +n02625612 +n02624807 +n02626265 +n02625851 +n02627292 +n02627532 +n02576575 +n02579928 +n02580336 +n02576906 +n02579303 +n02578771 +n02578928 +n02580679 +n02580830 +n02607201 +n02607470 +n02607072 +n02605703 +n02606052 +n02605936 +n02561381 +n02561661 +n02561514 +n02564720 +n02563648 +n02563182 +n02563792 +n02562796 +n02565072 +n02565324 +n02599052 +n02596381 +n02597608 +n02596067 +n02595702 +n02598573 +n02598878 +n02642644 +n02649546 +n02643112 +n02643566 +n02643836 +n02644113 +n02658531 +n02657694 +n02660208 +n02654745 +n02654425 +n02656670 +n02655020 +n02655523 +n02653145 +n02656032 +n02655848 +n02541687 +n02542432 +n02524202 +n02533834 +n02543565 +n02517442 +n01438208 +n02526121 +n02529772 +n02518324 +n02520147 +n02519686 +n02519862 +n02583567 +n01444339 +n01446589 +n01438581 +n01439121 +n01448951 +n02584449 +n02584145 +n02583890 +n01446760 +n01447331 +n01448594 +n01448291 +n01439514 +n01442972 +n01440764 +n01443831 +n01443537 +n01443243 +n01449712 +n01449374 +n02527622 +n02527057 +n02527271 +n02532602 +n02533209 +n02566834 +n02537085 +n02534734 +n02514041 +n02568959 +n02568087 +n02570164 +n02569484 +n02537716 +n02538216 +n02537525 +n02537319 +n02538010 +n02536456 +n02535537 +n02535258 +n02536864 +n02535759 +n01482330 +n01495701 +n01487506 +n01495493 +n01486838 +n01488918 +n01492357 +n01494475 +n01483522 +n01488038 +n01489501 +n01491006 +n01489709 +n01489920 +n01490112 +n01491361 +n01490670 +n01493146 +n01492569 +n01484850 +n01484097 +n01483830 +n01498041 +n01496331 +n01499396 +n01500476 +n01500091 +n01501160 +n01498989 +n01629276 +n01639765 +n01629962 +n01630284 +n01629819 +n01637615 +n01632047 +n01631663 +n01630670 +n01630901 +n01632458 +n01632777 +n01632601 +n01645776 +n01640846 +n01644900 +n01643896 +n01650167 +n01644373 +n01646648 +n01646902 +n01646292 +n01646802 +n01646388 +n01647640 +n01646555 +n01642539 +n01641206 +n01641577 +n01641391 +n01642257 +n01641739 +n01650690 +n01652026 +n01886756 +n01871265 +n01871875 +n01874434 +n01862399 +n02082791 +n01887474 +n01889074 +n02372584 +n01888411 +n02453611 +n02430559 +n01887623 +n02469914 +n02075296 +n02139199 +n02062017 +n02323449 +n02372952 +n01888181 +n02329401 +n01887787 +n02453108 +n01888264 +n02461830 +n02370806 +n01891633 +n01893825 +n02454794 +n02456962 +n02454379 +n02460009 +n02458135 +n02457945 +n02457408 +n02460451 +n02461128 +n02470238 +n02501583 +n02472293 +n02470325 +n02496913 +n02484322 +n02475669 +n02474777 +n02475078 +n02470899 +n02483092 +n02480153 +n02483708 +n02483362 +n02481823 +n02480495 +n02480855 +n02482650 +n02482474 +n02481103 +n02481366 +n02481500 +n02500267 +n02497673 +n02499316 +n02499808 +n02499022 +n02484473 +n02489589 +n02486410 +n02485536 +n02489166 +n02488702 +n02486261 +n02487347 +n02484975 +n02488291 +n02486657 +n02486908 +n02487847 +n02487547 +n02493793 +n02490219 +n02494079 +n02493509 +n02492035 +n02492660 +n02491107 +n02490811 +n02507649 +n02120997 +n02134971 +n02083346 +n02441326 +n02131653 +n02509515 +n02508213 +n02509815 +n02508021 +n02509197 +n02510455 +n02127808 +n02121620 +n02128925 +n02129604 +n02128385 +n02130308 +n02129165 +n02128757 +n02129923 +n02129837 +n01323068 +n02129463 +n01322898 +n02121808 +n02124623 +n02122878 +n02123159 +n02123045 +n02123242 +n02124484 +n02124075 +n02124313 +n02122298 +n02123478 +n02123394 +n02123917 +n02123597 +n02122510 +n02122725 +n02122430 +n02126640 +n02125494 +n02127052 +n02125311 +n02125081 +n02126139 +n02126787 +n02125010 +n02127292 +n02127482 +n02127678 +n02127381 +n02138441 +n02137015 +n02137549 +n02138647 +n02138777 +n02084071 +n02115335 +n02114100 +n02083672 +n02115096 +n02118333 +n02117135 +n02110958 +n02112826 +n02111500 +n02112706 +n02113335 +n02084861 +n02111129 +n02112497 +n02110341 +n02084732 +n02111626 +n02085374 +n02087122 +n02103406 +n02110806 +n02113978 +n02111277 +n02085272 +n02113186 +n02113023 +n02113799 +n02113624 +n02113712 +n02112018 +n02112350 +n02112137 +n02111889 +n02086346 +n02086240 +n02087046 +n02085936 +n02085782 +n02085620 +n02086079 +n02086753 +n02086646 +n02086910 +n02092468 +n02087394 +n02089468 +n02098550 +n02087551 +n02089232 +n02096437 +n02096756 +n02095412 +n02096051 +n02098286 +n02093859 +n02094114 +n02093754 +n02094433 +n02095314 +n02093647 +n02097474 +n02097658 +n02098413 +n02097298 +n02096177 +n02096585 +n02095050 +n02096294 +n02093056 +n02094258 +n02093991 +n02094562 +n02098105 +n02097209 +n02097130 +n02097047 +n02095570 +n02095727 +n02095889 +n02093256 +n02093428 +n02094721 +n02094931 +n02098906 +n02099997 +n02098806 +n02100399 +n02101108 +n02099029 +n02100583 +n02100236 +n02101006 +n02100735 +n02100877 +n02102318 +n02102605 +n02101861 +n02101388 +n02101556 +n02102480 +n02102973 +n02102040 +n02102177 +n02099267 +n02099601 +n02099429 +n02099849 +n02099712 +n02091635 +n02088466 +n02090475 +n02088238 +n02091244 +n02091467 +n02088839 +n02091831 +n02088094 +n02089078 +n02088632 +n02092002 +n02090379 +n02089555 +n02088364 +n02092339 +n02090827 +n02090622 +n02090721 +n02089973 +n02089867 +n02091134 +n02091032 +n02109047 +n02103841 +n02109961 +n02108551 +n02109811 +n02109525 +n02108915 +n02106854 +n02108672 +n02107420 +n02108422 +n02104523 +n02108089 +n02108254 +n02104029 +n02104280 +n02106966 +n02104365 +n02107142 +n02107312 +n02110627 +n02110185 +n02110063 +n02107574 +n02108000 +n02107683 +n02107908 +n02104882 +n02105412 +n02105855 +n02105505 +n02106166 +n02106030 +n02106550 +n02105641 +n02106662 +n02105251 +n02106382 +n02105056 +n02105162 +n02116738 +n02115641 +n02115913 +n02114855 +n01322508 +n02114712 +n02114548 +n02114367 +n02119022 +n02119477 +n02119789 +n02120079 +n02120505 +n02119634 +n02117900 +n02117512 +n02442845 +n02443484 +n02446206 +n02450295 +n02445394 +n02444819 +n02441942 +n02443114 +n02449350 +n02445715 +n02447366 +n02443346 +n02445004 +n02445171 +n02134084 +n02133161 +n01322983 +n02133704 +n02132136 +n02134418 +n02132580 +n02132788 +n02141306 +n02140049 +n02139671 +n02146371 +n02145424 +n02147591 +n02147947 +n02062430 +n02073250 +n02075927 +n02062744 +n02066707 +n02063224 +n02068974 +n02068541 +n02070430 +n02069412 +n02069701 +n02071636 +n02071294 +n02072798 +n02070174 +n02069974 +n02066245 +n02064338 +n02064816 +n02065407 +n02065026 +n02073831 +n02074367 +n02081571 +n02076196 +n02079389 +n02076779 +n02080415 +n02079851 +n02080146 +n02077658 +n02077152 +n02077923 +n02078574 +n02078738 +n02079005 +n02328429 +n02323902 +n02324045 +n02326432 +n02325722 +n02325366 +n02324587 +n02324850 +n02324514 +n02328150 +n02324431 +n02327842 +n02326862 +n02327028 +n02367492 +n02331046 +n02365480 +n02343320 +n02341974 +n02346627 +n02366959 +n02339376 +n02363005 +n02342885 +n02359324 +n02355227 +n02361337 +n02359556 +n02364520 +n02343772 +n02330245 +n02338145 +n02353861 +n02333546 +n02333909 +n02360282 +n02358091 +n02359915 +n02355477 +n02358890 +n02358390 +n02356381 +n02357111 +n02356977 +n02357401 +n02356798 +n02361706 +n02361587 +n02364840 +n02364673 +n02332755 +n02332156 +n02503517 +n02504458 +n02504013 +n02394477 +n02373336 +n02399000 +n02437136 +n02395003 +n02437616 +n02438580 +n02397744 +n02398521 +n02397529 +n02429456 +n02430045 +n02401031 +n02439033 +n02439398 +n02434190 +n02433925 +n02433318 +n02432983 +n02431337 +n02432511 +n02430830 +n02431122 +n02434954 +n02432291 +n02431785 +n02431976 +n02433546 +n02432704 +n02414578 +n02410509 +n02411206 +n02407959 +n02402010 +n02419796 +n02411705 +n02418064 +n02416519 +n02416104 +n02415435 +n02415253 +n02415577 +n02415829 +n02410702 +n02410900 +n02408817 +n02408429 +n02409508 +n02404573 +n02402175 +n02404906 +n02402425 +n02405302 +n02410011 +n02404186 +n02403003 +n02403325 +n02403231 +n02403740 +n02403454 +n02406174 +n02404432 +n02406647 +n02407625 +n02407071 +n02405929 +n02407276 +n02407390 +n02406533 +n02424305 +n02421136 +n02420509 +n02427724 +n02426813 +n02426481 +n02421792 +n02421449 +n02424695 +n02420828 +n02422391 +n02422699 +n02424486 +n02425887 +n02422106 +n02424085 +n02428508 +n02428349 +n02423022 +n02424909 +n02425228 +n02423218 +n02423589 +n02413131 +n02413050 +n02411999 +n02412210 +n02412080 +n02418465 +n02419336 +n02419634 +n02416964 +n02416820 +n02417914 +n02417387 +n02417070 +n02416880 +n02417534 +n02437482 +n02437312 +n02396427 +n02397096 +n02396014 +n02395406 +n02438173 +n02438272 +n02391994 +n02393580 +n02374149 +n02393940 +n02392434 +n02393161 +n02392824 +n02374451 +n02391049 +n02389346 +n02388917 +n02377603 +n02382948 +n02389128 +n02381460 +n02389261 +n02382204 +n02375302 +n02376918 +n02387722 +n02388832 +n02381609 +n02377703 +n02388735 +n02386014 +n02380464 +n02386310 +n02377480 +n02380335 +n02382437 +n02389026 +n02385214 +n02383231 +n02388276 +n02377291 +n02377181 +n02377388 +n02379430 +n02378969 +n02378541 +n02381364 +n02379329 +n02381004 +n02381261 +n02379908 +n02379183 +n02386141 +n02386224 +n02382338 +n02387254 +n02386496 +n02386853 +n02387093 +n02386968 +n02387346 +n02382039 +n02380745 +n02380583 +n02382750 +n02382635 +n02382850 +n02391234 +n02391373 +n02391508 +n02390015 +n02389779 +n02389559 +n01872401 +n01873310 +n01872772 +n01877134 +n01882714 +n01883070 +n01875313 +n01874928 +n01883513 +n01881171 +n01877606 +n01877812 +n01878929 +n01879509 +n01884834 +n01885498 +n01662622 +n01661818 +n01662784 +n01669372 +n01669191 +n01666228 +n01667778 +n01672032 +n01669654 +n01663401 +n01665932 +n01668665 +n01670092 +n01667114 +n01668892 +n01664990 +n01664065 +n01663782 +n01665541 +n01664369 +n01664674 +n01664492 +n01670802 +n01671125 +n01670535 +n01671479 +n01696633 +n01726692 +n01673282 +n01674464 +n01699831 +n01698434 +n01697178 +n01698640 +n01699040 +n01697611 +n01697457 +n01740551 +n01752165 +n01751748 +n01745125 +n01741562 +n01727646 +n01753488 +n01752736 +n01752585 +n01753032 +n01753959 +n01754533 +n01754370 +n01754876 +n01757901 +n01757677 +n01755581 +n01757115 +n01755740 +n01756089 +n01756508 +n01756291 +n01756733 +n01757343 +n01747885 +n01749939 +n01751472 +n01747589 +n01749582 +n01746359 +n01745484 +n01748264 +n01748906 +n01741943 +n01743605 +n01742821 +n01742172 +n01743086 +n01744100 +n01743936 +n01744401 +n01730960 +n01735189 +n01733757 +n01729322 +n01732244 +n01731545 +n01737021 +n01729977 +n01730812 +n01730563 +n01728572 +n01728920 +n01739381 +n01734418 +n01740131 +n01735577 +n01735439 +n01734104 +n01733957 +n01732614 +n01732789 +n01737875 +n01737472 +n01737728 +n01730185 +n01730307 +n01734808 +n01734637 +n01675722 +n01693783 +n01694709 +n01684133 +n01692333 +n01695060 +n01685808 +n01676755 +n01687665 +n01674990 +n01694178 +n01692864 +n01689411 +n01681940 +n01681653 +n01678343 +n01682714 +n01682435 +n01681328 +n01680264 +n01679626 +n01677366 +n01677747 +n01679962 +n01680655 +n01680478 +n01687978 +n01689081 +n01688243 +n01693334 +n01693175 +n01690149 +n01689811 +n01700470 +n01713764 +n01701859 +n01704323 +n01515303 +n01844917 +n01524359 +n01514668 +n01833805 +n01838038 +n01825930 +n01844551 +n01604330 +n01834918 +n01822602 +n01514752 +n01517565 +n01789386 +n01844231 +n01816887 +n01517966 +n01503976 +n01514859 +n02000954 +n01858441 +n02016358 +n02021795 +n01845132 +n02008041 +n02014237 +n02021050 +n02018795 +n02005790 +n02002075 +n02013177 +n02012849 +n02013706 +n02014524 +n02007558 +n02014941 +n02006656 +n02005399 +n02022684 +n02008497 +n02010453 +n02009229 +n02011281 +n02008643 +n02008796 +n02011460 +n02010728 +n02011016 +n02009750 +n02009508 +n02009380 +n02009912 +n02010272 +n02012185 +n02011805 +n02006063 +n02006364 +n02003204 +n02002724 +n02002556 +n02004131 +n02003839 +n02004492 +n02004855 +n02017725 +n02015357 +n02016066 +n02015554 +n02018027 +n02018368 +n02018207 +n02006985 +n02007284 +n02023341 +n02034129 +n02034295 +n02036053 +n02040266 +n02037110 +n02034661 +n02031585 +n02031934 +n02030996 +n02036711 +n02026059 +n02033779 +n02038993 +n02033561 +n02037464 +n02024479 +n02025239 +n02023992 +n02024763 +n02025043 +n02023855 +n02034971 +n02035210 +n02032222 +n02032355 +n02032480 +n02033041 +n02030287 +n02027897 +n02030837 +n02029087 +n02029378 +n02028035 +n02027075 +n02028900 +n02027492 +n02029706 +n02027357 +n02028727 +n02030035 +n02026948 +n02028175 +n02028342 +n02028451 +n02037869 +n02038466 +n01858845 +n01858906 +n01860002 +n01858281 +n01859190 +n01858780 +n01859325 +n01860187 +n01859496 +n01859689 +n01859852 +n02016956 +n02017213 +n02016816 +n02040505 +n02057731 +n02050004 +n02045369 +n02049088 +n02051474 +n02055658 +n02047614 +n02041085 +n02044178 +n02043808 +n02043333 +n02041246 +n02043063 +n02042472 +n02041678 +n02042180 +n02041875 +n02042759 +n02042046 +n02044778 +n02044517 +n02059162 +n02058221 +n02058594 +n02060411 +n02060889 +n02060133 +n02050442 +n02050313 +n02051059 +n02050586 +n02050809 +n02045864 +n02046759 +n02045596 +n02047260 +n02046939 +n02047411 +n02047045 +n02052775 +n02054036 +n02054502 +n02051845 +n02053083 +n02054711 +n02055107 +n02052204 +n02052365 +n02053425 +n02053584 +n02055803 +n02056728 +n02057035 +n02056570 +n02057330 +n02056228 +n02048115 +n02048353 +n02047975 +n01845477 +n01855672 +n01846331 +n01856890 +n01857851 +n01857079 +n01856380 +n01857512 +n01857325 +n01856072 +n01856553 +n01856155 +n01857632 +n01847253 +n01851375 +n01849676 +n01852329 +n01850192 +n01847978 +n01852400 +n01848840 +n01849157 +n01847806 +n01849466 +n01848123 +n01850553 +n01847089 +n01851895 +n01849863 +n01852142 +n01847000 +n01852671 +n01848976 +n01847407 +n01848648 +n01852861 +n01851207 +n01851038 +n01850373 +n01850873 +n01847170 +n01851573 +n01851731 +n01848555 +n01848323 +n01848453 +n01853195 +n01853870 +n01854415 +n01853498 +n01853666 +n01854838 +n01855032 +n01855476 +n01855188 +n01854700 +n01584225 +n01546506 +n01546921 +n01525720 +n01546039 +n01539573 +n01585121 +n01585715 +n01584695 +n01586374 +n01584853 +n01586020 +n01552813 +n01551711 +n01555004 +n01554448 +n01547832 +n01548301 +n01549886 +n01549430 +n01550172 +n01549641 +n01555305 +n01549053 +n01548865 +n01548492 +n01563128 +n01589718 +n01578575 +n01576695 +n01528654 +n01591697 +n01594004 +n01557185 +n01527347 +n01597022 +n01598588 +n01527617 +n01576076 +n01555809 +n01587834 +n01602630 +n01597336 +n01538955 +n01529672 +n01600657 +n01601694 +n01527194 +n01586941 +n01588002 +n01527917 +n01587526 +n01601068 +n01603600 +n01602832 +n01571904 +n01575745 +n01566645 +n01594372 +n01589286 +n01526521 +n01582856 +n01528396 +n01528845 +n01556182 +n01542786 +n01590583 +n01564914 +n01567133 +n01563746 +n01564394 +n01563449 +n01565078 +n01570676 +n01570839 +n01570267 +n01567678 +n01569060 +n01568892 +n01568294 +n01569971 +n01569262 +n01567879 +n01568720 +n01569423 +n01563945 +n01564217 +n01566207 +n01565599 +n01565930 +n01564773 +n01579410 +n01581984 +n01579578 +n01582398 +n01580077 +n01579260 +n01579028 +n01582220 +n01579149 +n01580870 +n01581166 +n01577035 +n01578180 +n01577659 +n01593028 +n01592084 +n01592694 +n01592387 +n01592540 +n01592257 +n01562265 +n01558993 +n01559477 +n01558461 +n01558307 +n01558149 +n01560105 +n01558594 +n01557962 +n01558765 +n01561732 +n01562014 +n01560280 +n01562451 +n01561452 +n01560419 +n01560636 +n01559804 +n01560793 +n01560935 +n01598988 +n01599556 +n01600085 +n01599269 +n01599159 +n01597906 +n01598074 +n01597737 +n01533651 +n01534155 +n01540233 +n01531178 +n01534762 +n01533893 +n01537134 +n01531344 +n01541386 +n01531512 +n01533481 +n01541922 +n01533000 +n01544704 +n01530575 +n01532325 +n01532511 +n01531811 +n01534582 +n01532829 +n01530439 +n01533339 +n01531971 +n01534433 +n01541102 +n01540566 +n01540832 +n01536644 +n01535469 +n01536334 +n01536186 +n01535690 +n01536780 +n01536035 +n01537544 +n01538059 +n01538630 +n01537895 +n01538200 +n01603812 +n01603953 +n01573898 +n01573074 +n01572328 +n01572782 +n01574045 +n01573240 +n01573360 +n01572654 +n01572489 +n01574560 +n01575117 +n01574390 +n01575401 +n01595450 +n01595168 +n01595624 +n01594787 +n01594968 +n01595974 +n01596273 +n01583209 +n01583495 +n01543632 +n01544389 +n01591123 +n01591005 +n01591301 +n01539925 +n01540090 +n01834540 +n01834177 +n01843065 +n01838598 +n01842235 +n01843719 +n01843383 +n01839598 +n01839330 +n01839086 +n01841102 +n01841679 +n01840775 +n01839750 +n01841441 +n01841288 +n01827403 +n01826364 +n01830915 +n01830042 +n01829413 +n01826680 +n01829869 +n01828970 +n01828556 +n01827793 +n01828096 +n01616318 +n01605630 +n01618503 +n01613294 +n01621127 +n01616764 +n01618922 +n01617766 +n01617443 +n01618082 +n01617095 +n01620414 +n01619310 +n01620735 +n01619536 +n01619835 +n01620135 +n01609751 +n01606522 +n01607812 +n01608265 +n01610955 +n01610552 +n01606809 +n01616086 +n01608432 +n01607600 +n01607962 +n01606672 +n01609956 +n01610226 +n01613177 +n01611800 +n01611472 +n01612628 +n01612476 +n01612275 +n01611969 +n01612122 +n01609391 +n01609062 +n01608814 +n01613807 +n01614343 +n01615121 +n01614925 +n01614038 +n01614556 +n01615703 +n01615458 +n01622959 +n01621635 +n01623880 +n01623425 +n01622352 +n01623615 +n01622120 +n01625562 +n01623706 +n01624115 +n01624537 +n01622483 +n01623110 +n01624833 +n01622779 +n01837072 +n01835276 +n01825278 +n01823013 +n01824575 +n01824035 +n01521399 +n01521756 +n01518878 +n01519873 +n01519563 +n01789740 +n01810700 +n01801876 +n01791463 +n01791107 +n02153203 +n01794344 +n01791954 +n01794158 +n01809106 +n01791625 +n01792429 +n01792158 +n01793435 +n01792042 +n01793715 +n01792640 +n01793249 +n01792955 +n01815601 +n01811909 +n01814370 +n01812337 +n01813088 +n01812662 +n01814921 +n01814755 +n01813532 +n01813385 +n01813948 +n01814217 +n01802721 +n01810268 +n01795088 +n01803078 +n01806567 +n01807496 +n01807105 +n01803362 +n01804163 +n01805801 +n01806297 +n01806364 +n01806143 +n01806467 +n01804478 +n01806847 +n01804653 +n01808140 +n01807828 +n01797307 +n01798484 +n01797020 +n01797886 +n01797601 +n01796729 +n01795545 +n01796340 +n01819734 +n01821203 +n01819115 +n01817346 +n01818832 +n01817953 +n01818515 +n01818299 +n01820052 +n01820348 +n01817263 +n01821869 +n01822300 +n01819313 +n01819465 +n01821076 +n01820546 +n01317089 +n01317294 +n01918744 +n01922303 +n01940736 +n02316707 +n01909422 +n01767661 +n01906749 +n01930112 +n01934440 +n01924916 +n01938454 +n01935395 +n01955084 +n01955933 +n01968315 +n01942177 +n01960459 +n01963317 +n01956481 +n01963571 +n01959985 +n01965889 +n01961985 +n01957335 +n01958038 +n01959492 +n01964441 +n01964271 +n01965529 +n01969726 +n01968897 +n01972541 +n01970164 +n01970667 +n01951274 +n01953361 +n01943899 +n01945845 +n01943087 +n01953762 +n01950731 +n01945685 +n01944390 +n01949085 +n01947396 +n01946630 +n01944812 +n01945143 +n01944955 +n02317335 +n02321170 +n02319555 +n02319095 +n02321529 +n02317781 +n01909906 +n01914163 +n01913166 +n01910747 +n01915700 +n01914609 +n01915811 +n01916925 +n01916187 +n01916481 +n01917882 +n01917289 +n01784675 +n01974773 +n01768244 +n01786646 +n01769347 +n01787835 +n02309242 +n02159955 +n01785667 +n01994910 +n01976868 +n01990007 +n01975687 +n01976146 +n01990800 +n01992773 +n01991520 +n01991028 +n01982650 +n01986806 +n01986214 +n01987545 +n01976957 +n01985128 +n01984245 +n01984695 +n01983481 +n01981276 +n01979874 +n01978455 +n01978287 +n01980166 +n01982068 +n01770393 +n01770081 +n01776192 +n01772222 +n01776313 +n01779629 +n01779148 +n01772664 +n01775370 +n01774750 +n01775062 +n01773797 +n01774384 +n01773157 +n01773549 +n02226183 +n02236896 +n02263378 +n02232951 +n02163297 +n02262449 +n02246011 +n02188699 +n02272871 +n02273392 +n02231052 +n02161457 +n02236355 +n02312427 +n02231487 +n02162561 +n02164464 +n02241569 +n02262803 +n02206270 +n02274024 +n02312640 +n02268148 +n02270623 +n02207805 +n02226429 +n02229544 +n02228341 +n02226970 +n02241426 +n02240517 +n02266050 +n02264885 +n02264363 +n02236044 +n02236241 +n02233338 +n02234355 +n02234848 +n02233943 +n02251775 +n02256656 +n02258198 +n02257284 +n02250822 +n02259212 +n02252226 +n02200198 +n02205219 +n02203152 +n02196344 +n02190166 +n02198859 +n02196119 +n02201000 +n02202006 +n02195819 +n02195526 +n02192513 +n02191773 +n02190790 +n02192252 +n02191979 +n02169974 +n02168245 +n02167151 +n02169023 +n02165456 +n02171453 +n02180875 +n02183096 +n02169497 +n02176261 +n02176439 +n02165105 +n02177972 +n02168699 +n02166567 +n02166826 +n02171869 +n02175916 +n02175569 +n02172870 +n02173373 +n02174001 +n02172182 +n02172518 +n02174659 +n02243562 +n02244797 +n02212062 +n02218371 +n02219486 +n02206856 +n02216211 +n02215770 +n02212602 +n02213107 +n02212958 +n02213543 +n02213239 +n02213788 +n02220804 +n02221083 +n02221414 +n02209354 +n02208280 +n02211627 +n02210427 +n02211444 +n02209624 +n02208498 +n02208848 +n02274259 +n02283201 +n02281787 +n02274822 +n02281406 +n02277742 +n02279972 +n02280649 +n02282257 +n02282903 +n02282385 +n02275773 +n02278210 +n02276258 +n02276902 +n02279257 +n02277094 +n02276078 +n02275560 +n02277268 +n02276355 +n02276749 +n02278024 +n02281015 +n02281136 +n02305929 +n02301452 +n02295064 +n02298541 +n02284611 +n02287004 +n02291572 +n02305085 +n02301935 +n02304432 +n02303284 +n02302969 +n02292692 +n02291748 +n02268443 +n02268853 +n01321123 +n02376679 +n01323493 +n01338685 +n01387065 +n01339083 +n01339336 +n01339801 +n01339471 +n01397114 +n01389507 +n01397871 +n01410457 +n01407798 +n01424420 +n01392380 +n01395254 +n01396048 +n11542137 +n11544015 +n11542640 +n09626238 +n09856671 +n09605289 +n09622049 +n09971273 +n09882716 +n09621232 +n09902954 +n09620794 +n09727440 +n09624168 +n09752519 +n10378026 +n10500217 +n10514429 +n09610405 +n09617867 +n10355449 +n09618957 +n10002760 +n10384496 +n09637339 +n09613191 +n09836160 +n10274815 +n09890749 +n10112591 +n10260706 +n09606527 +n09767197 +n10709529 +n09976429 +n09918554 +n10588074 +n10565667 +n09990415 +n10120330 +n09616922 +n09622302 +n09630641 +n09796809 +n09614684 +n10635788 +n09645091 +n10405694 +n09676884 +n09638875 +n09874428 +n09627906 +n09628382 +n10522759 +n10247880 +n09624980 +n10529231 +n10024362 +n09614315 +n09612848 +n09632518 +n10147935 +n09871867 +n09620078 +n09634494 +n10077593 +n10040945 +n09623038 +n10560106 +n10289039 +n10422405 +n09774783 +n10042845 +n09831962 +n10726031 +n09923673 +n09610660 +n09626031 +n10401331 +n09621545 +n10362319 +n10665698 +n09906449 +n09939313 +n10439373 +n09607630 +n09631463 +n10451450 +n10541229 +n09793141 +n10633450 +n10530959 +n09629752 +n10560637 +n10431625 +n09619168 +n09763784 +n09636339 +n10235549 +n09845401 +n10513823 +n10610465 +n09951274 +n09816771 +n10401829 +n10307234 +n10505613 +n10148035 +n09874725 +n09944022 +n10015485 +n10728624 +n10308168 +n10200781 +n10480253 +n10376523 +n09903153 +n10748620 +n10581890 +n10045713 +n10165109 +n10694258 +n10509063 +n10559996 +n10366966 +n10305802 +n10421470 +n10164492 +n10477713 +n10020890 +n10679174 +n10632576 +n10189278 +n09894445 +n10504206 +n10559288 +n09917593 +n09833441 +n10384392 +n10060352 +n09840217 +n09777012 +n10309896 +n09905185 +n10686885 +n10209731 +n10093818 +n10754189 +n10411551 +n10577284 +n10285313 +n10333439 +n10624074 +n10287213 +n09871229 +n10078719 +n09843443 +n10173771 +n10192839 +n10419785 +n10406266 +n10288964 +n10804287 +n10665587 +n10153414 +n10406765 +n10611613 +n09805324 +n09824361 +n10316360 +n10707233 +n10696508 +n09858165 +n10175248 +n09979321 +n10692482 +n10396106 +n10427764 +n10385566 +n10439851 +n09820263 +n10533013 +n09854421 +n10304914 +n10575463 +n09915651 +n10453184 +n10101634 +n10701180 +n09835230 +n10746931 +n10542888 +n10604491 +n09764381 +n09929298 +n10019406 +n09785659 +n10618342 +n10782471 +n10701644 +n10105733 +n10638922 +n09842047 +n10315561 +n09835506 +n10153594 +n09830194 +n10263411 +n10157128 +n10498816 +n10689306 +n10604380 +n10634849 +n09923561 +n09764598 +n10086568 +n10007684 +n09841696 +n10321340 +n10092488 +n10386984 +n10387196 +n10205457 +n10578021 +n10098710 +n09836519 +n09836786 +n09836343 +n09877951 +n10300154 +n10095769 +n10435988 +n09930257 +n10387324 +n10098862 +n10642596 +n10331167 +n09946814 +n10299250 +n09896170 +n10415638 +n10091450 +n10069296 +n09989502 +n10226413 +n10493685 +n09765278 +n09930876 +n10340312 +n09990777 +n09834699 +n10737103 +n10649197 +n10701962 +n10415037 +n10151760 +n10229883 +n10732010 +n10603851 +n10599806 +n10369317 +n09903501 +n10755080 +n10098245 +n10382825 +n10536416 +n10036929 +n10624310 +n09842528 +n10085869 +n09991867 +n10078131 +n10627252 +n10682953 +n10237196 +n09789566 +n10182190 +n09899671 +n10150071 +n10091651 +n10806113 +n10249459 +n10317500 +n09822830 +n10448983 +n09862621 +n10540114 +n10009276 +n10333838 +n10730728 +n10721321 +n09659188 +n09650729 +n09652149 +n09659039 +n09729530 +n09641002 +n09725653 +n09846469 +n09750770 +n10486166 +n10169147 +n09684901 +n09683757 +n09682291 +n10364198 +n10518602 +n10341573 +n10672371 +n10332861 +n10112129 +n10602470 +n10727256 +n10508141 +n10652605 +n09881265 +n09933098 +n09812338 +n09920283 +n10078806 +n10339966 +n10667477 +n10566072 +n10469874 +n10624540 +n09809925 +n09846755 +n09873899 +n09779790 +n10034614 +n10449664 +n10034201 +n09951616 +n10037385 +n09846894 +n10282672 +n10053808 +n09815790 +n10137825 +n10605985 +n10604979 +n09861946 +n10763383 +n09841188 +n10644598 +n10548681 +n10791221 +n10583790 +n09873473 +n10763620 +n10548537 +n10120671 +n10241300 +n10318293 +n10176679 +n09932508 +n10186216 +n10134178 +n10079399 +n09821831 +n09934337 +n10324560 +n10063461 +n09886403 +n09760609 +n10260800 +n10655594 +n09938449 +n10183931 +n09972458 +n09813219 +n10049363 +n10372373 +n10076604 +n09835348 +n09974648 +n10433164 +n09859152 +n10727171 +n10308732 +n09833536 +n10582746 +n10393909 +n10013927 +n10225219 +n10202624 +n09800964 +n10465831 +n09787534 +n10174445 +n10441962 +n10132035 +n09896685 +n09934774 +n10279018 +n10793570 +n10155849 +n10087434 +n09964202 +n09811852 +n10348526 +n10317007 +n10058777 +n10360747 +n09941964 +n10347446 +n09770359 +n09941787 +n09942970 +n09809749 +n09770179 +n10208950 +n10580772 +n10093475 +n10645017 +n09943239 +n09943541 +n10263790 +n10283170 +n10259348 +n10092978 +n10296176 +n09893191 +n10123844 +n10259780 +n10259997 +n10510245 +n10622053 +n10058585 +n10690648 +n10523341 +n10739391 +n10476467 +n10512372 +n10802507 +n10753442 +n09733793 +n09738708 +n09641757 +n09738400 +n09727826 +n09686536 +n09724533 +n09744834 +n09743792 +n09744161 +n09742101 +n09689435 +n09734450 +n09644152 +n09750282 +n09673495 +n09718811 +n09718217 +n09712696 +n09718936 +n10711766 +n09694771 +n09719794 +n09714694 +n09675922 +n09676247 +n10774440 +n09720256 +n09725229 +n09731571 +n09691729 +n09693982 +n09712448 +n09697401 +n09696585 +n09722658 +n09724656 +n09723067 +n09694664 +n09712324 +n09689958 +n09695979 +n10327987 +n09688804 +n09730204 +n09711435 +n09713108 +n09731343 +n09717233 +n09695620 +n09728285 +n09707289 +n09701833 +n09700964 +n09750891 +n09715427 +n09708750 +n09705784 +n09734185 +n09752023 +n09635534 +n09696456 +n09732170 +n09730824 +n09719309 +n09734535 +n09736945 +n09720842 +n09692915 +n09751895 +n09724785 +n09747495 +n09734639 +n09749386 +n09705124 +n09731436 +n10303814 +n10450303 +n10722575 +n10054657 +n10631309 +n10249270 +n09913455 +n10162991 +n09807754 +n09505153 +n10209082 +n10323634 +n10104064 +n10001481 +n10242328 +n10159045 +n09932098 +n10253995 +n10005934 +n10578471 +n09770949 +n10004718 +n10570019 +n10289462 +n10069645 +n10187990 +n09916348 +n10727458 +n10320863 +n10572706 +n10572889 +n10038409 +n10756148 +n09927451 +n10243664 +n10502329 +n09988493 +n10373390 +n10470779 +n09928136 +n10750031 +n10081204 +n09857200 +n10013811 +n09894143 +n10313239 +n10082997 +n10677713 +n09787765 +n10485883 +n10275395 +n09913593 +n09772930 +n09633969 +n10195593 +n09756049 +n10607478 +n09855433 +n10017272 +n10630188 +n10522035 +n10521662 +n10380672 +n10210911 +n10382710 +n10164747 +n09782397 +n10524076 +n10467395 +n10467179 +n10698368 +n09792969 +n10525617 +n10675010 +n09889941 +n10557854 +n09618760 +n09899929 +n10116702 +n10258786 +n10508710 +n09873348 +n09870208 +n10793168 +n10098517 +n10314517 +n10629939 +n10477077 +n10261624 +n10082687 +n10262445 +n10167152 +n10098624 +n10674713 +n09838621 +n10047459 +n10091564 +n10740868 +n09872066 +n10070711 +n10628644 +n10421016 +n09915434 +n10588357 +n10529965 +n10334009 +n10339717 +n09818022 +n10412055 +n10335931 +n09945745 +n10432441 +n10607291 +n10583387 +n10718131 +n10542761 +n10147121 +n10738111 +n10159533 +n10223177 +n10185793 +n10553235 +n10293332 +n10178216 +n10563403 +n10488656 +n10619642 +n10276477 +n10620758 +n10450161 +n10043643 +n10043491 +n10313724 +n10084295 +n10787470 +n10333601 +n10131151 +n09871681 +n09981939 +n10055410 +n10243137 +n10377021 +n10368528 +n10025635 +n09874862 +n10613996 +n10472129 +n10598181 +n10129825 +n09847543 +n10173410 +n10780284 +n09889065 +n09832456 +n10780632 +n10117851 +n09827363 +n10247358 +n10282482 +n10092794 +n10375314 +n09981278 +n10082043 +n09972010 +n10237069 +n09792555 +n10236946 +n10568358 +n10207169 +n10236304 +n10734394 +n10373998 +n10595164 +n10357613 +n09823502 +n10146104 +n10602985 +n10145239 +n10267865 +n09854218 +n10399491 +n10102800 +n10102369 +n10406391 +n10300500 +n10080869 +n10332385 +n09988063 +n10375402 +n10145774 +n10143172 +n10145590 +n10345015 +n10142747 +n10142391 +n10146002 +n10267311 +n10141590 +n10092643 +n09918248 +n10671613 +n10141732 +n10145340 +n10145902 +n10145480 +n09827683 +n10135129 +n10465451 +n10353016 +n13001930 +n13040629 +n12969131 +n12985420 +n13052670 +n13037406 +n13077295 +n12987056 +n12979829 +n12975804 +n12974987 +n12985773 +n13044778 +n12985857 +n13035241 +n13043926 +n12982468 +n13035707 +n13044375 +n12969425 +n13060190 +n13054073 +n13040303 +n13028611 +n12997654 +n12983048 +n13062421 +n13054560 +n12963628 +n12980840 +n12991184 +n12989938 +n12992177 +n12988158 +n13029326 +n13029760 +n13011595 +n13049953 +n12998815 +n12997919 +n13052931 +n13050397 +n13012253 +n13001041 +n13005984 +n13000891 +n13007417 +n13019835 +n13013764 +n13006894 +n13002750 +n13017102 +n13232779 +n13009429 +n13013534 +n13003522 +n13001366 +n13009085 +n13022210 +n13002925 +n13006171 +n13003712 +n13001206 +n13004423 +n13001529 +n13003254 +n13003061 +n13032115 +n13032381 +n13033577 +n13055577 +n13055949 +n13055423 +n05430628 +n05450617 +n05449959 +n05451384 +n05453657 +n09369169 +n09454412 +n09403211 +n13086908 +n09416076 +n09251407 +n05218119 +n09444100 +n09438940 +n09257949 +n09189157 +n09475044 +n11691857 +n13102775 +n13087625 +n13022709 +n11675842 +n13152742 +n13125117 +n13129165 +n11690254 +n11669335 +n13134947 +n11676500 +n11675025 +n11674332 +n11669786 +n13131028 +n13132338 +n13132656 +n12301445 +n13133613 +n13141415 +n13137409 +n12642090 +n12267677 +n12658481 +n12144313 +n12158031 +n13135832 +n12620546 +n11636835 +n13139055 +n12144580 +n07929351 +n13136556 +n12768682 +n11689483 +n13136316 +n07770571 +n07737081 +n07774842 +n07774596 +n07775050 +n07772788 +n07771212 +n07772147 +n07772274 +n07774719 +n07737745 +n07772935 +n15086247 +n11879895 +n12576323 +n12532564 +n07814634 +n07775197 +n07770763 +n11748002 +n12172364 +n12515925 +n12560282 +n12578916 +n12560621 +n12544539 +n12024690 +n13154494 +n11690455 +n12927013 +n11953610 +n13128365 +n13133932 +n13163991 +n13134059 +n13131618 +n13130726 +n11678010 +n12136392 +n11979964 +n12088223 +n12462805 +n12433081 +n09218494 +n09381242 +n09460046 +n09451237 +n09450163 +n01904182 +n13155095 +n09432283 +n11705387 +n09438844 +n11692265 +n05237755 +n09416890 +n01956764 +n01904806 +n01904886 +n05586759 +n05581932 +n01904029 +n05238282 +n05254795 +n02469248 +n05256862 +n05258051 +n01899894 +n05261404 +n05259914 +n05261310 +n05260240 +n05262185 +n05261566 +n05262534 +n05262422 +n05263183 +n05263448 +n11524662 +n11448153 +n09247410 +n11508382 +n11524451 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.names" new file mode 100644 index 00000000..e81c80e7 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.names" @@ -0,0 +1,9418 @@ +thing +matter +object +atmospheric phenomenon +body part +body of water +head +hair +structure +vein +mouth +heel +watercourse +ocean +gas +solid +substance +food +tear gas +sky +ice +food +cheese +yogurt +produce +baked goods +cake mix +Emmenthal +Camembert +Brie +mozzarella +Stilton +double cream +edible fruit +vegetable +currant +custard apple +citrus +jackfruit +pomegranate +avocado +prickly pear +apple +carambola +fig +mangosteen +tangelo +plum +papaya +apricot +berry +elderberry +loquat +pear +litchi +peach +muscat +grape +banana +pitahaya +rambutan +kiwi +melon +breadfruit +pineapple +mango +date +papaw +durian +passion fruit +jujube +guava +dried fruit +cherry +quince +nectarine +cherimoya +soursop +lime +mandarin +kumquat +orange +lemon +citron +grapefruit +pomelo +clementine +tangerine +satsuma +sweet orange +bitter orange +navel orange +Valencia orange +crab apple +eating apple +Granny Smith +Delicious +McIntosh +Red Delicious +Golden Delicious +strawberry +mulberry +currant +lingonberry +blackberry +red currant +raspberry +cranberry +acerola +persimmon +blueberry +bilberry +muskmelon +watermelon +cantaloup +sour cherry +sweet cherry +bing cherry +mushroom +asparagus +plantain +pumpkin +cucumber +root vegetable +cruciferous vegetable +raw vegetable +solanaceous vegetable +artichoke +legume +leek +squash +greens +celery +cardoon +gumbo +pieplant +onion +fennel +taro +beet +yam +carrot +potato +baked potato +mashed potato +french fries +mustard +cabbage +kohlrabi +cauliflower +brussels sprouts +broccoli rabe +broccoli +radish +turnip +collards +bok choy +savoy cabbage +head cabbage +kale +pepper +tomato +eggplant +tomatillo +sweet pepper +hot pepper +bell pepper +pimento +green pepper +chili +tabasco +cayenne +jalapeno +cherry tomato +beefsteak tomato +bean +pea +chickpea +lentil +soy +common bean +black bean +kidney bean +fresh bean +green bean +shell bean +snap bean +haricot vert +string bean +fava bean +green soybean +green pea +snow pea +sugar snap pea +summer squash +winter squash +spaghetti squash +zucchini +yellow squash +butternut squash +acorn squash +chard +turnip greens +salad green +bean sprout +spinach +lamb's-quarter +cress +chicory +chicory escarole +radicchio +lettuce +leaf lettuce +crisphead lettuce +cos +green onion +shallot +purple onion +doughnut +bread +crouton +breadstick +soft pretzel +rye bread +dark bread +raisin bread +brown bread +cinnamon bread +quick bread +matzo +sour bread +bun +white bread +challah +loaf of bread +pretzel +English muffin +toast +nan +chapatti +garlic bread +Yorkshire pudding +banana bread +scone +Irish soda bread +biscuit +muffin +drop scone +cornbread +nut bread +buttermilk biscuit +hardtack +shortcake +corn muffin +popover +bran muffin +cornpone +hush puppy +johnnycake +hamburger bun +bagel +frankfurter bun +sweet roll +hard roll +brioche +crescent roll +honey bun +cinnamon roll +cross bun +Italian bread +baguet +French bread +meat loaf +French loaf +material +stucco +gravel +rock +leopard +soil +sand +loofa +paper +litter +toilet tissue +queen +comestible +foodstuff +fare +beverage +soul food +feed +nutriment +yolk +comfort food +egg +grain +carrot juice +soya milk +whole wheat flour +oatmeal +ingredient +dairy product +cocoa +concoction +Spam +juice +canned food +corn +rice +wild rice +barley +wheat +sweet corn +popcorn +white rice +paddy +flavorer +egg yolk +saffron +juniper berries +cayenne +sesame seed +sassafras +spice +condiment +sweetening +herb +paprika +garlic +nasturtium +mocha +cardamom +nutmeg +stick cinnamon +Chinese anise +clove +cinnamon +guacamole +chili sauce +olive +chutney +vinegar +dip +soy sauce +salsa +cranberry sauce +catsup +spread +green olive +sauce +wine vinegar +cider vinegar +hummus +miso +spaghetti sauce +chocolate sauce +Tabasco +hot sauce +veloute +pesto +dressing +bourguignon +hollandaise +carbonara +tomato sauce +green mayonnaise +mayonnaise +powdered sugar +honey +syrup +sorghum +grenadine +maple syrup +basil +lemon balm +sweet woodruff +clary sage +hyssop +comfrey +coriander +mint +chives +marjoram +borage +sage +tea +rosemary +parsley +bay leaf +thyme +tea bag +oolong +souchong +cream +milk +whipping cream +clotted cream +light cream +heavy cream +stuffing +batter +dough +filling +pastry +bread dough +puff paste +phyllo +chow +menu +dietary +diet +diet +dietary supplement +vegetarianism +vitamin pill +multivitamin +alcohol +fruit juice +fizz +near beer +cocoa +coffee +cider +tea +soft drink +fruit drink +ginger beer +drinking water +potion +smoothie +mixed drink +liquor +sake +wine +hooch +home brew +liqueur +hard cider +brew +neutral spirits +aperitif +highball +cocktail +spritzer +punch +pina colada +mimosa +julep +gin and tonic +Bloody Mary +martini +gimlet +gin and it +daiquiri +sidecar +Sazerac +margarita +cup +May wine +eggnog +fruit punch +vodka +firewater +aquavit +grog +schnapps +arrack +gin +rum +aqua vitae +tequila +bitters +geneva +brandy +ouzo +whiskey +eau de vie +Cognac +grappa +Armagnac +Calvados +Irish +bourbon +sour mash +Scotch +rye +corn whiskey +blended whiskey +blush wine +vintage +champagne +vin ordinaire +dessert wine +macon +sparkling wine +Cotes de Provence +varietal +Burgundy +fortified wine +Bordeaux +table wine +California wine +vermouth +red wine +Rhone wine +white wine +Montrachet +Beaujolais +Chablis +Madeira +sherry +malmsey +port +muscat +Saint Emilion +claret +dry vermouth +sweet vermouth +Medoc +Chianti +Pinot noir +Rioja +Merlot +Cabernet +zinfandel +Riesling +Sauvignon blanc +Muscadet +Yquem +Pinot blanc +Sauterne +Chenin blanc +Chardonnay +sack +Verdicchio +Canary wine +Pernod +Drambuie +sambuca +triple sec +absinth +maraschino +anisette +beer +lager +draft beer +ale +suds +Munich beer +Pilsner +light beer +malt +bock +Weissbier +porter +stout +bitter +pale ale +Guinness +Weizenbock +orange juice +cranberry juice +nectar +iced coffee +caffe latte +espresso +cappuccino +Irish coffee +chicory +cafe au lait +mocha +Turkish coffee +ice tea +cuppa +tonic +cola +orange soda +ginger ale +pop +root beer +Coca Cola +Pepsi +mineral water +bottled water +soda water +oil cake +bird feed +fodder +eatage +hay +alfalfa +broad bean +dainty +fast food +puree +finger food +dish +course +mother's milk +vitamin +kosher +meal +jello +gelatin +sweet +candied apple +confiture +candy +chewing gum +confectionery +maraschino +conserve +strawberry jam +apple butter +lemon curd +jam +jelly +peppermint +peanut brittle +chocolate kiss +nougat bar +candy bar +jelly bean +lollipop +candy cane +truffle +chocolate fudge +cough drop +sugar candy +Easter egg +kiss +gumdrop +candy corn +fondant +cotton candy +caramel +fudge +candy egg +chocolate egg +bubble gum +gum ball +poached egg +piece de resistance +side dish +stew +omelet +soup +sashimi +taco +French toast +cheese souffle +potpie +lamb curry +stuffed tomato +chow mein +croquette +gefilte fish +coq au vin +special +spaghetti and meatballs +eggs Benedict +schnitzel +buffalo wing +chicken casserole +rissole +paella +frittata +meatball +chili +porridge +tamale +stuffed tomato +couscous +deviled egg +beef Wellington +pasta +egg roll +enchilada +falafel +mushy peas +turnover +scrambled eggs +Spanish rice +teriyaki +barbecued spareribs +pilaf +kabob +tempura +samosa +fried egg +sandwich plate +chicken cacciatore +saute +fried rice +custard +sukiyaki +fish and chips +souffle +steak au poivre +pizza +fondue +biryani +stuffed peppers +mousse +shirred egg +Swedish meatball +jambalaya +Scotch egg +burrito +risotto +salad +boiled egg +curry +snack food +bouillabaisse +goulash +pottage +beef stew +hot pot +fish stew +hotchpotch +Irish stew +ratatouille +gazpacho +won ton +petite marmite +split-pea soup +consomme +chowder +potage +marmite +lentil soup +bisque +pea soup +pepper pot +chicken broth +chicken soup +broth +broth +gumbo +borsch +corn chowder +clam chowder +fish chowder +gruel +congee +macaroni and cheese +lasagna +cannelloni +spaghetti +creme caramel +creme brulee +pepperoni pizza +anchovy pizza +cheese pizza +Sicilian pizza +sausage pizza +chocolate fondue +cheese fondue +coleslaw +macaroni salad +tossed salad +salad nicoise +pasta salad +fruit salad +tabbouleh +green salad +chef's salad +hard-boiled egg +Easter egg +sandwich +corn chip +chip +bomber +cheeseburger +chicken sandwich +ham sandwich +Reuben +bacon-lettuce-tomato sandwich +chili dog +open-face sandwich +gyro +wrap +hamburger +club sandwich +hotdog +tortilla chip +nacho +entree +plate +dessert +appetizer +mousse +tiramisu +frozen dessert +pudding +pudding +trifle +flan +whip +dumpling +compote +chocolate mousse +pavlova +parfait +ice-cream cake +ice lolly +ice-cream sundae +ice-cream cone +ice cream +ice +banana split +frozen yogurt +frozen custard +vanilla ice cream +peach ice cream +chocolate ice cream +strawberry ice cream +plum pudding +chocolate pudding +shrimp cocktail +stuffed mushroom +cocktail +hors d'oeuvre +carrot stick +antipasto +water-soluble vitamin +fat-soluble vitamin +vitamin P +vitamin C +B-complex vitamin +vitamin B2 +inositol +vitamin B6 +choline +pantothenic acid +vitamin B12 +vitamin Bc +vitamin D +vitamin A1 +picnic +bite +supper +breakfast +refection +smorgasbord +buffet +brunch +continental breakfast +dinner +lunch +banquet +cookout +fish fry +barbecue +refreshment +nosh +land +location +land +fomite +part +geological formation +cobweb +whole +hail +swamp +cultivated land +region +region +pass +line +point +opening +bedside +soil horizon +extremity +boundary +nib +selvage +shoreline +benthos +resort area +geographical area +district +scrubland +bush +oilfield +field +tract +heronry +grassland +site +court +basketball court +fairground +plot +field +amusement park +veld +pasture +campsite +garbage heap +cemetery +flowerbed +garden +topiary +peach orchard +yard +grainfield +playground +garden +city +city district +eparchy +kasbah +waterfront +business district +col +defile +hemline +spoor +crest +topographic point +workplace +half-mast +intersection +bus stop +mecca +hole-in-the-wall +patisserie +bakery +farm +piggery +ranch +dairy +knothole +chasm +oxbow +floor +pinetum +plain +steppe +cigarette butt +pipefitting +handle +panhandle +stock +haft +ax handle +broomstick +pistol grip +arete +volcanic crater +spring +ice mass +natural depression +natural elevation +oceanfront +massif +cliff +shore +talus +ridge +range +lakefront +slope +cave +foreshore +beach +hot spring +geyser +icecap +iceberg +Alpine glacier +glacier +valley +lunar crater +landfill +sinkhole +basin +crater +bed +hole +arroyo +ravine +canyon +gorge +tidal basin +cirque +ocean floor +riverbed +streambed +burrow +pothole +tableland +hill +mountain +highland +ridge +promontory +anthill +butte +foothill +knoll +alp +ben +volcano +sandbar +dune +reef +bank +coral reef +atoll +sandbank +bluff +point +mull +crag +precipice +seashore +strand +lakeside +littoral +seaside +mountainside +descent +hillside +ski slope +escarpment +bank +downhill +ascent +brae +uphill +riverbank +waterside +cove +cavern +grotto +artifact +living thing +natural object +assembly +block +millstone +paving +creation +opening +plaything +surface +tramline +structure +instrumentality +padding +covering +fabric +bookmark +float +building material +decoration +way +strip +article +facility +excavation +commodity +sheet +fixture +blacktop +line +bullion +tessera +tile +anvil +representation +art +needlework +product +pieta +map +sketch +sonogram +photograph +waxwork +arthrogram +radiogram +photomicrograph +photostat +painting +triptych +nude +finger-painting +smocking +stitch +sewing stitch +knitting stitch +lockstitch +hemstitch +garter stitch +purl +book +work +jotter +newspaper +wicker +masterpiece +openwork +woodwork +lacquerware +cabinetwork +joinery +decolletage +gargoyle +aperture +hole +mouthpiece +outfall +plughole +manhole +keyhole +perforation +thumbhole +pogo stick +ball +pinata +teddy +jungle gym +bubble +hula-hoop +pinwheel +slide +sport kite +cockhorse +doll +foam +air bubble +spume +shaving foam +golliwog +kachina +horizontal surface +board +tabletop +side +platform +tarmacadam +floor +turntable +stage +dais +sumo ring +hurricane deck +flatbed +parquet +backgammon board +pegboard +facade +ceiling +body +floor +bridge +corner +conformation +superstructure +airdock +cross +house of cards +hull +gun enclosure +lookout +building complex +shelter +honeycomb +column +altar +arch +tower +transept +mound +fountain +obelisk +fan vaulting +arcade +loggia +coil +billboard +partition +masonry +skein +colonnade +obstruction +building +sail +projection +peristyle +door +stadium +drinking fountain +area +balcony +porch +dock +high altar +housing +supporting structure +balance +defensive structure +entablature +memorial +establishment +signboard +bodywork +fuselage +ground floor +mezzanine +loft +basement +footbridge +drawbridge +cantilever bridge +rope bridge +overpass +truss bridge +viaduct +steel arch bridge +covered bridge +gangplank +suspension bridge +trestle bridge +plant +college +winery +factory +distillery +oil refinery +refinery +rolling mill +foundry +steel mill +lumbermill +stamp mill +quartz battery +battery +harbor +Nissen hut +hovel +tent +hut +igloo +dugout +mountain tent +pup tent +pavilion +backpacking tent +fly tent +canvas tent +field tent +wall tent +circus tent +Gothic arch +round arch +pointed arch +triumphal arch +broken arch +Moorish arch +Roman arch +campanile +turret +clock tower +shot tower +church tower +minaret +pylon +silo +watchtower +trestle +pylon +steeple +fire tower +high-rise +supporting tower +control tower +bell tower +beacon +burial mound +snowbank +rampart +fraise +battlement +altarpiece +wall +gable +wainscoting +attic +pediment +bell gable +brickwork +stonework +barrier +obstacle +plug +lever +grate +safety rail +movable barrier +bannister +breakwater +grille +weir +railing +hurdle +starting gate +fence +dam +gate +door +lychgate +portcullis +turnstile +French window +car door +screen door +French door +double door +interior door +sliding door +revolving door +barn door +hatchback +storm door +wall +retaining wall +rail fence +chainlink fence +dry wall +hedge +worm fence +picket fence +stone wall +water jump +bunker +earplug +cork +tap +presbytery +hotel +tenement +abattoir +apartment building +aviary +hall +house +Roman building +rest house +outbuilding +funeral home +medical building +hotel-casino +library +casino +farm building +place of worship +restaurant +ministry +rotunda +observatory +office building +temple +signal box +government building +greenhouse +rink +planetarium +public house +bowling alley +house +ruin +architecture +skyscraper +gazebo +school +chapterhouse +theater +hall of residence +conservatory +center +resort hotel +resort +motel +dude ranch +Ritz +ski lodge +hostel +motor hotel +city hall +guildhall +lyceum +field house +oast house +courthouse +shed +garage +carport +outhouse +coach house +boathouse +woodshed +apiary +maternity hospital +dispensary +stable +chicken coop +cowbarn +barn +pantheon +church +temple +shrine +stupa +masjid +synagogue +mosque +chapel +kirk +abbey +cathedral +cathedral +minster +cafe +rotisserie +automat +brasserie +cafeteria +diner +capitol +embassy +town hall +chancellery +customhouse +Statehouse +courthouse +ice rink +ice hockey rink +alehouse +free house +solar house +bungalow +row house +cabin +duplex house +mansion +lodging house +gatehouse +log cabin +saltbox +country house +dollhouse +ranch house +boarding house +detached house +villa +chalet +residence +farmhouse +terraced house +brownstone +palace +stately home +manor +summer house +dacha +villa +chateau +manse +religious residence +glebe house +parsonage +palace +monastery +abbey +abbey +day school +conservatory +music school +opera +music hall +cinema +little theater +home theater +control center +settlement house +call center +cornice +cog +knob +bill +flange +brim +tine +eaves +tooth +pinhead +football stadium +hippodrome +dome +ballpark +bullring +amphitheater +patio +corner +baggage claim +hideaway +choir +breakfast area +quad +chancel +auditorium +court +dining area +room +assembly hall +enclosure +nave +aisle +storage space +goalmouth +food court +atrium +cloister +forecourt +toilet +sun parlor +engineering +surgery +rotunda +classroom +gallery +manor hall +cell +lounge +sauna +dressing room +billiard room +belfry +kitchen +library +storeroom +workroom +sewing room +anechoic chamber +dining room +recreation room +hospital room +reading room +booth +conference room +bedroom +clean room +living room +door +hall +reception room +boardroom +study +locker room +cocktail lounge +television room +compartment +court +poolroom +bathroom +control room +anteroom +water closet +men's room +washroom +public toilet +home room +lecture room +study hall +pantry +stockroom +vault +refectory +dining-hall +canteen +family room +rumpus room +emergency room +recovery room +operating room +telephone booth +voting booth +confessional +shower stall +master bedroom +motel room +guestroom +hotel room +dormitory +nursery +day nursery +great hall +concert hall +palace +exhibition hall +parlor +drawing room +press box +command module +cabin +pilothouse +cab +luggage compartment +cabinet +cockpit +stateroom +car +cable car +stall +drawing room +terrarium +cage +playpen +pen +vivarium +pound +lock +chicken yard +chamber +recess +birdcage +rabbit hutch +hutch +cow pen +rodeo +fold +sounding board +burial chamber +firing chamber +resonator +furnace +bomb shelter +hyperbaric chamber +repository +mausoleum +kiln +blast furnace +oast +gas oven +incinerator +mihrab +columbarium +fire +fireplace +apse +cellar +cupboard +stacks +gallery +amphitheater +organ loft +stoop +sun deck +front porch +veranda +deck +back porch +portico +marina +dry dock +block +dwelling +tennis camp +living quarters +mobile home +condominium +apartment +ward +cellblock +condominium +yurt +lodge +vacation home +hearth +fixer-upper +cliff dwelling +homestead +semi-detached house +wigwam +tepee +accommodation +first class +cabin class +bedsitting room +flatlet +chassis +support +framework +pedestal +buttress +flying buttress +abutment +ribbing +bustle +window frame +frame +gantry +honeycomb +truss +lattice +cornice +picture frame +window +climbing frame +trellis +airframe +grate +grape arbor +walker +casing +tambour +arbor +rack +mounting +sash +casement +oriel +bay window +stained-glass window +skylight +display window +rose window +porthole +transom +clerestory +dormer +dormer window +lancet window +fanlight +plate rack +barbecue +bicycle rack +luggage rack +dish rack +towel rack +passe-partout +pave +mount +stronghold +fortress +fortification +bastion +keep +kremlin +acropolis +alcazar +martello tower +fieldwork +bastion +escarpment +palisade +castle +cenotaph +megalith +Seven Wonders of the Ancient World +brass +national monument +pantheon +dolmen +menhir +place of business +institution +university +mercantile establishment +office +cabaret +health spa +plaza +country store +department store +shop +marketplace +boutique +salon +shoe shop +bookshop +package store +thriftshop +junk shop +toyshop +cleaners +bazaar +gift shop +florist +drugstore +garage +delicatessen +small stores +barbershop +stall +tobacco shop +newsstand +butcher shop +pizzeria +confectionery +convenience store +bazaar +agora +grocery store +open-air market +supermarket +hypermarket +greengrocery +souk +farmer's market +flea market +newsroom +box office +headquarters +correctional institution +orphanage +jail +penitentiary +prison +toiletry +weaponry +equipment +connection +implement +furnishing +device +ceramic +system +container +conveyance +medium +deodorant +bath oil +cream +lotion +shaving cream +hair spray +mousse +perfume +hairdressing +antiperspirant +powder +cosmetic +bath salts +hand cream +cold cream +sunscreen +lanolin +body lotion +toner +hand lotion +after-shave +potpourri +patchouli +perfumery +cologne +toilet water +pomade +brilliantine +toilet powder +talcum +depilatory +highlighter +makeup +face powder +lip-gloss +eyeshadow +mascara +lipstick +rouge +eyeliner +eyebrow pencil +armament +defense system +bomb +ammunition +naval weaponry +bazooka +artillery +launcher +cannon +field artillery +mortar +basilisk +hydrogen bomb +atom bomb +round +shotgun shell +recorder +sports equipment +photographic equipment +naval equipment +parasail +gear +satellite +game equipment +parachute +electronic equipment +apparatus +automation +material +baggage +tape recorder +cassette recorder +Dictaphone +videocassette recorder +baseball equipment +croquet mallet +clay pigeon +skate +wrestling mat +cricket equipment +basketball equipment +javelin +shuttlecock +golf equipment +spike +stick +boxing equipment +boxing glove +gymnastic apparatus +weight +baseball glove +batting cage +batting glove +base +batting helmet +baseball bat +home plate +first base +third base +second base +in-line skate +Rollerblade +roller skate +ice skate +hockey skate +speed skate +figure skate +cricket bat +wicket +golfcart +golf glove +tee +golf club +wood +iron +driver +spoon +wedge +midiron +putter +niblick +pitching wedge +sand wedge +hockey stick +polo mallet +horizontal bar +horse +uneven parallel bars +parallel bars +trampoline +balance beam +vaulting horse +pommel horse +dumbbell +barbell +enlarger +camera +clapperboard +film +light meter +box camera +flash camera +Polaroid camera +point-and-shoot camera +webcam +motion-picture camera +digital camera +portrait camera +reflex camera +X-ray film +reel +negative +regalia +kit +rig +fishing gear +stable gear +rigging +crown +crown jewels +sewing kit +first-aid kit +carpenter's kit +layette +drill rig +drilling platform +harness +snaffle +headgear +saddle blanket +halter +bridle +sputnik +space station +backboard +ball +puzzle +pool table +bowling pin +man +chip +roulette wheel +goal +volleyball net +pinball machine +soccer ball +pool ball +bowling ball +softball +field hockey ball +punching bag +billiard ball +croquet ball +cricket ball +tennis ball +golf ball +rugby ball +cue ball +medicine ball +basketball +eight ball +ping-pong ball +handball +baseball +racquetball +bocce ball +volleyball +jigsaw puzzle +crossword puzzle +chessman +white +pawn +basket +net +electronic fetal monitor +monitor +monitor +television monitor +telephone +oscilloscope +peripheral +booster +cassette player +CD player +receiver +audio system +lens +playback +television equipment +circuitry +cassette deck +central processing unit +mixer +scanner +tape player +detector +modem +equalizer +tape deck +amplifier +cellular telephone +speakerphone +desk phone +pay-phone +handset +dial telephone +radiotelephone +television receiver +radio receiver +satellite receiver +heterodyne receiver +clock radio +reproducer +hi-fi +stereo +iPod +Walkman +video iPod +ghetto blaster +camcorder +television camera +pendulum +purifier +sequencer +reformer +duplicator +heat pump +semaphore +tomograph +ultracentrifuge +generator +incubator +burner +Foucault pendulum +clock pendulum +metronome +Photostat +photocopier +Xerox +facsimile +mimeograph +positron emission tomography scanner +computerized axial tomography scanner +gas burner +blowtorch +bunsen burner +gas ring +packaging +blister pack +roofing +temporary hookup +slip ring +telephone line +ligament +junction +hot line +digital subscriber line +land line +binder +wire +chain +concertina +barbed wire +paper chain +anchor chain +fob +bicycle chain +tire chain +chatelaine +joint +contact +dovetail +welt +hinge +scarf joint +weld +seam +mortise joint +butt hinge +strap hinge +distributor point +tread +wiper +bar +tool +utensil +rubber eraser +needle +eraser +stick +brush +hook +sharpener +sports implement +leather strip +swatter +fire iron +oar +stick +cleaning implement +rod +writing implement +shovel +split rail +fret +bolt +rotor +towel rail +lever +track +handlebar +crowbar +stick +key +tappet +pedal +rocker arm +gun trigger +space bar +backspace key +shift key +telegraph key +accelerator +sustaining pedal +hand tool +jack +pestle +garden tool +plow +comb +drill +cutting implement +tamp +garden rake +rake +stamp +locking pliers +pestle +plunger +pincer +pliers +soldering iron +spade +hammer +pipe cutter +wrench +screwdriver +trowel +saw +opener +scraper +shovel +brick trowel +spatula +carpenter's hammer +gavel +mallet +maul +torque wrench +pipe wrench +adjustable wrench +open-end wrench +Allen wrench +box wrench +hacksaw +folding saw +handsaw +pruner +pruning saw +corkscrew +bottle opener +can opener +hedge trimmer +lawn mower +power mower +riding mower +power drill +electric drill +cutter +twist bit +bit +blade +knife blade +bolt cutter +cigar cutter +edge tool +scissors +knife +ax +razor +wire cutter +chisel +plane +shears +snips +pruning shears +secateurs +carving knife +Bowie knife +pocketknife +cleaver +hunting knife +case knife +parer +letter opener +switchblade +penknife +battle-ax +hatchet +shaver +straight razor +safety razor +cold chisel +wood chisel +jointer +smooth plane +spokeshave +kitchen utensil +ceramic ware +funnel +rolling pin +reamer +masher +kitchenware +squeezer +mixer +cookie cutter +cooking utensil +grater +mincer +eggbeater +whisk +blender +pan +Crock Pot +chafing dish +spatula +griddle +enamelware +steamer +cookie sheet +cooker +turner +omelet pan +stewing pan +frying pan +roaster +wok +saucepan +graniteware +cloisonne +porcelain +earthenware +stoneware +pottery +Spode +china +bone china +majolica +faience +knitting needle +crochet needle +walking stick +matchstick +club +fiddlestick +spindle +stob +staff +drumstick +mallet +cane +sword cane +bat +table-tennis racquet +truncheon +alpenstock +flagpole +crutch +electric toothbrush +toothbrush +sable +scrub brush +hairbrush +bristle brush +shaving brush +pencil sharpener +steel +cue +racket +squash racket +tennis racket +badminton racket +thong +strap +cheekpiece +rein +noseband +leading rein +scull +paddle +besom +scouring pad +dustmop +squeegee +broom +swab +rotating shaft +wand +shaft +piston rod +kickstand +axle +pole +fishing rod +connecting rod +tie rod +driveshaft +crankshaft +transmission shaft +spindle +camshaft +boom +stilt +ski pole +clothes tree +caber +spar +mast +mast +bowsprit +yard +mizzenmast +royal mast +mainmast +foremast +fly rod +spinning rod +pencil +pen +highlighter +chalk +crayon +lead pencil +ballpoint +Sharpie +quill +fountain pen +felt-tip pen +furniture +office furniture +dining-room furniture +wardrobe +bedroom furniture +table +table +wall unit +lamp +dining-room table +washstand +buffet +cabinet +baby bed +bedstead +lawn furniture +credenza +bookcase +entertainment center +etagere +seat +sectional +chest of drawers +file +Rolodex +card index +vertical file +clothes closet +armoire +bed +berth +platform bed +hospital bed +bunk +trundle bed +four-poster +couch +bunk bed +twin bed +sleigh bed +single bed +hammock +Murphy bed +double bed +gaming table +gueridon +table-tennis table +counter +altar +breakfast table +stand +conference table +pedestal table +kitchen table +operating table +tea table +lectern +worktable +gateleg table +dressing table +desk +drop-leaf table +coffee table +trestle table +console table +checkout +bar +meat counter +reception desk +salad bar +snack bar +drafting table +lab bench +writing desk +secretary +davenport +dining table +dinner table +refectory table +floor lamp +table lamp +reading lamp +dresser +china cabinet +medicine chest +bassinet +crib +carrycot +cradle +chair +toilet seat +stool +sofa +ottoman +bench +lawn chair +chaise longue +rocking chair +swivel chair +throne +straight chair +ladder-back +highchair +armchair +Windsor chair +folding chair +wheelchair +motorized wheelchair +barber chair +easy chair +recliner +Morris chair +wing chair +deck chair +camp chair +music stool +taboret +footstool +settee +daybed +convertible +love seat +chesterfield +studio couch +park bench +flat bench +pew +settle +window seat +chiffonier +highboy +bird feeder +heater +lighter +signal +converter +crusher +drive +knocker +peeler +musical instrument +shoehorn +shock absorber +machine +conductor +bait +stabilizer +filter +mechanism +acoustic device +trap +charger +airfoil +router +pick +energizer +fan +hydrofoil +dental appliance +adapter +toy +support +optical device +straightener +tongs +phonograph needle +instrument +comb +remote control +exercise device +comforter +washboard +shredder +water ski +blower +ventilator +breathing device +applicator +skeleton key +guitar pick +restraint +keyboard +electrical device +appliance +fire extinguisher +corrective +reflector +alarm +electronic device +snowshoe +holding device +memory device +key +noisemaker +source of illumination +indicator +detector +breathalyzer +imprint +afterburner +horn +elastic device +ski +lifting device +solar heater +electric heater +radiator +gas heater +convector +space heater +stove +cigar lighter +match +cairn +sign +street sign +traffic light +electrical converter +catalytic converter +inverter +synchronous converter +external drive +CD-ROM drive +internal drive +stringed instrument +electronic instrument +keyboard instrument +wind instrument +bass +percussion instrument +dulcimer +chordophone +banjo +zither +samisen +guitar +bowed stringed instrument +sitar +lute +mandola +mandolin +harp +acoustic guitar +Hawaiian guitar +uke +electric guitar +viol +violin +cello +viola +viola da gamba +Stradavarius +theremin +electric organ +synthesizer +piano +clavier +organ +accordion +grand piano +upright +spinet +mechanical piano +baby grand +concert grand +harpsichord +spinet +ocarina +woodwind +brass +organ pipe +free-reed instrument +whistle +pipe +kazoo +flute +beating-reed instrument +double-reed instrument +single-reed instrument +bassoon +oboe +clarinet +sax +baritone +bugle +flugelhorn +French horn +trombone +cornet +harmonium +harmonica +concertina +chanter +panpipe +bagpipe +fipple flute +pennywhistle +drone +bass fiddle +bass horn +bass guitar +euphonium +handbell +bones +gong +vibraphone +steel drum +marimba +glockenspiel +chime +kettle +maraca +drum +cymbal +bongo +bass drum +tambourine +snare drum +tenor drum +slot machine +power shovel +press +backhoe +printer +machine tool +motor +snow thrower +cash machine +farm machine +computer +Zamboni +mill +staple gun +power tool +concrete mixer +stapler +slicer +textile machine +record player +calculator +vending machine +slot +automat +garlic press +bench press +hydraulic press +punch press +character printer +impact printer +printer +drum printer +line printer +laser printer +Linotype +thermal printer +portable +typewriter +bar printer +wire matrix printer +dot matrix printer +bubble jet printer +ink-jet printer +shaper +drill press +grinder +lathe +miller +engine +electric motor +heat engine +jet engine +automobile engine +aircraft engine +generator +steam engine +internal-combustion engine +wind turbine +gasoline engine +diesel +outboard motor +radial engine +rocket +fanjet +booster +space rocket +alternator +windmill +starter +kick starter +cultivator +haymaker +combine +thresher +harvester +disk harrow +harrow +slide rule +web site +home computer +server +digital computer +supercomputer +workstation +personal computer +portable computer +desktop computer +notebook +planner +laptop +hand-held computer +pepper mill +water mill +meat grinder +coffee mill +treadmill +windmill +electric hammer +power saw +buffer +circular saw +chain saw +table saw +saber saw +bandsaw +spinning wheel +loom +jukebox +gramophone +abacus +adding machine +hand calculator +semiconductor device +wire +cord +heat sink +cable +microprocessor +transistor +light-emitting diode +chip +filament +jumper cable +telephone wire +patchcord +telephone cord +power cord +extension cord +ethernet cable +electrical cable +printer cable +power line +fisherman's lure +fly +dry fly +wet fly +streamer fly +outrigger +vane +strainer +air filter +oil filter +sieve +tea-strainer +colander +fusee drive +android +radiator +mechanical device +rotating mechanism +rotor head +carriage +control +power steering +automaton +action +cooling system +gear +tape drive +film advance +sprinkler +propeller +anchor +golf-club head +weathervane +machine +seeder +pump +gearshift +ride +bumper +hook +ski binding +coupling +record changer +swing +windshield wiper +winder +winder +diaphragm +shutter +escapement +broadcaster +curler +splint +compressor +air compressor +carburetor +dildo +cartridge holder +trapeze +gearing +stator +airplane propeller +screw +pulley +wheel +idle pulley +lever +inclined plane +millwheel +waterwheel +roller +bicycle wheel +caster +grinding wheel +rowel +fifth wheel +wagon wheel +waterwheel +car wheel +sprocket +pinwheel +potter's wheel +gear +driving wheel +paddlewheel +roulette +spur gear +bevel gear +pinion +ramp +ax head +screw +grease-gun +gas pump +bicycle pump +sump pump +hand pump +centrifugal pump +Ferris wheel +roller coaster +carousel +universal joint +clutch +freewheel +disk clutch +bobbin +reel +shuttle +blade +gyroscope +circle +rotor +paddle +impeller +fan blade +disk +puck +brake disk +token +Frisbee +planchet +tail rotor +main rotor +valve +steering wheel +governor +joystick +regulator +switch +ball valve +butterfly valve +timer +flywheel +faucet +thermostat +aperture +mixing faucet +stopcock +toggle switch +push button +dial +horn button +mouse button +doorbell +bell push +flintlock +movement +gunlock +cooling tower +evaporative cooler +air conditioner +gearset +four-wheel drive +whistle +silencer +megaphone +hearing aid +bell +cowbell +church bell +dinner bell +spider web +mousetrap +lobster pot +web +net +landing net +fishnet +vertical stabilizer +spoiler +spoiler +rotor blade +flap +rudder +horizontal stabilizer +wing +exhaust fan +electric fan +brace +denture +backboard +stirrup +pier +pier +back +shelf +landing gear +baluster +spoke +base +step +brace +pillow block +bearing +rocker +coat hanger +harp +rest +bracket +tailstock +bookend +structural member +headstock +seat +thrust bearing +hanger +rack +harness +cantle +ladder-back +bookshelf +mantel +neck brace +knee brace +ankle brace +back brace +arm +headrest +chin rest +armrest +sconce +corbel +shelf bracket +sill +riser +upright +brace +tread +beam +windowsill +doorsill +stile +jamb +column +post +support column +caryatid +goalpost +newel post +bollard +lamppost +telephone pole +maypole +timber +rundle +tie +rafter +girder +timber +floor joist +joist +car seat +pillion +plane seat +saddle +chair +bicycle seat +bucket seat +backseat +stock saddle +English saddle +tripod +spice rack +magazine rack +music stand +camera tripod +easel +autofocus +projector +finder +laser +lens +objective +condenser +camera lens +anastigmat +contact +sunglass +eyepiece +field lens +Fresnel lens +portrait lens +closeup lens +telephoto lens +wide-angle lens +plotter +scientific instrument +measuring instrument +weapon +guillotine +drafting instrument +analyzer +navigational instrument +optical instrument +medical instrument +instrument of punishment +catapult +extractor +theodolite +riding crop +tachymeter +collider +microtome +accelerator +stroboscope +magnifier +console +telescope +microscope +astronomical telescope +equatorial +optical telescope +radio telescope +refracting telescope +field glass +reflecting telescope +Cassegrainian telescope +Newtonian telescope +Schmidt telescope +Maksutov telescope +electron microscope +field-emission microscope +light microscope +binocular microscope +hand glass +operating microscope +compound microscope +loupe +oximeter +dropper +refractometer +rangefinder +barometer +pedometer +thermometer +astrolabe +measuring stick +gauge +timepiece +aneroid barometer +caliper +potentiometer +tachometer +scale +tape +meter +hygrometer +sextant +rule +altazimuth +pyrometer +meat thermometer +water gauge +vacuum gauge +anemometer +gasoline gauge +pressure gauge +manometer +sphygmomanometer +atomic clock +clock +watch +sundial +timer +hourglass +grandfather clock +digital clock +alarm clock +wall clock +analog clock +pendulum clock +cuckoo clock +digital watch +analog watch +pocket watch +wristwatch +stopwatch +parking meter +chronograph +vernier caliper +micrometer +balance +analytical balance +electronic balance +electric meter +odometer +ammeter +speedometer +ohmmeter +water meter +voltmeter +magnetometer +tomahawk +gun +bow +bow and arrow +brass knucks +knife +sword +stun gun +projectile +antiaircraft +firearm +set gun +air gun +gas gun +paintball gun +cannon +autoloader +pistol +twenty-two +Mauser +muzzle loader +rifle +repeating firearm +semiautomatic firearm +automatic firearm +Garand rifle +Luger +semiautomatic pistol +automatic rifle +assault rifle +automatic pistol +machine gun +submachine gun +burp gun +Uzi +Kalashnikov +Tommy gun +Colt +derringer +revolver +gat +flintlock +musket +sniper rifle +Winchester +carbine +crossbow +longbow +khukuri +bayonet +machete +dagger +rapier +fencing sword +broadsword +cavalry sword +saber +epee +foil +bullet +cannonball +compass +protractor +artificial horizon +depth finder +magnetic compass +compass +binoculars +spectacles +projector +telescopic sight +goggles +sunglasses +slide projector +front projector +movie projector +overhead projector +hypodermic syringe +cardiograph +syringe +stethoscope +laryngoscope +otoscope +surgical instrument +retractor +hemostat +pillory +rattan +exercise bike +treadmill +respirator +snorkel +oxygen mask +aqualung +paintbrush +spray gun +brake +handcuff +fastener +seat belt +leash +safety belt +brake system +muzzle +chain +bolt +buckle +knot +cleat +clothespin +catch +pin +dowel +screw +slide fastener +button +seal +paper fastener +lock +thumbtack +locker +clasp +clip +carabiner +nail +toggle +nut and bolt +bowline +bow +latch +hasp +rivet +hairpin +skewer +hatpin +brochette +bobby pin +barrette +safety pin +shirt button +coat button +washer +gasket +head gasket +O ring +padlock +sash fastener +latch +combination lock +doorlock +paper clip +bulldog clip +hair slide +hydraulic brake +disk brake +drum brake +typewriter keyboard +QWERTY keyboard +computer keyboard +piano keyboard +circuit +Segway +jack +control panel +telephone jack +circuit breaker +plug +electrolytic +dashboard +transducer +solar cell +antenna +capacitor +spark plug +relay +surge suppressor +solar array +battery +Tesla coil +closed circuit +wiring +computer circuit +integrated circuit +module +printed circuit +interface +CPU board +circuit board +mosaic +electro-acoustic transducer +earphone +microphone +loudspeaker +telephone receiver +headset +condenser microphone +cardioid microphone +tweeter +bullhorn +tannoy +woofer +subwoofer +omnidirectional antenna +directional antenna +radio antenna +television antenna +dish +scanner +yagi +voltaic battery +flashlight battery +lead-acid battery +pack +prosthesis +solar dish +mirror +hand glass +car mirror +rearview mirror +outside mirror +burglar alarm +automobile horn +shofar +fire alarm +readout +scanner +tube +display +personal digital assistant +dongle +trackball +mouse +answering machine +hearing aid +beeper +triode +pentode +computer monitor +monitor +screen +digital display +liquid crystal display +flat panel display +window +dialog box +caller ID +computer screen +background +C-clamp +chuck +collet +holder +vise +candlestick +cigarette holder +candelabrum +menorah +Menorah +cache +optical disk +magnetic disk +memory +magnetic tape +recording +auxiliary storage +compact disk +videodisk +CD-ROM +CD-R +audio CD +hard disc +diskette +flash memory +random-access memory +videotape +cassette tape +tape +phonograph record +LP +seventy-eight +lamp +light +flash +lantern +candle +neon lamp +vigil light +taillight +gas lamp +oil lamp +hurricane lamp +fluorescent lamp +streetlight +spotlight +electric lamp +jack-o'-lantern +Chinese lantern +flashlight +light bulb +penlight +headlight +room light +strip lighting +fairy light +sconce +searchlight +night-light +blinker +torch +flood +fuel gauge +gnomon +dial +vernier scale +pointer +light pen +hand +sweep hand +minute hand +second hand +hour hand +spring +rubber band +coil spring +box spring +hoist +winch +elevator +crane +wheel and axle +derrick +maze +communication system +network +Global Positioning System +resonator +exhaust +mechanical system +computer system +scaffolding +reticle +walkie-talkie +radio +telecommunication system +telephone system +intercommunication system +interphone +television +satellite television +surveillance system +color television +local area network +superhighway +ethernet +wireless local area network +production line +linkage +suspension +fuel injection +planter +trophy case +wastepaper basket +dish +bread-bin +dispenser +pot +bunker +reliquary +cup +bag +cassette +Dumpster +bag +measuring cup +glass +paintball +measure +envelope +shaker +piggy bank +basket +sewing basket +savings bank +powder horn +can +wheeled vehicle +workbasket +bin +canister +mold +cargo container +videocassette +case +case +vessel +drawer +receptacle +package +watering can +box +cocotte +Petri dish +gravy boat +serving dish +tureen +sugar bowl +bowl +casserole +ramekin +butter dish +salad bowl +mixing bowl +porringer +cereal bowl +soup bowl +punch bowl +roll-on +aerosol +soap dispenser +atomizer +inhaler +demitasse +beaker +kylix +coffee cup +chalice +teacup +Dixie cup +evening bag +shoulder bag +clutch bag +reticule +backpack +sachet +beanbag +sandbag +carryall +pannier +duffel bag +book bag +tool bag +mailbag +purse +drawstring bag +envelope +saddlebag +sack +pouch +shopping bag +toilet bag +gamebag +kitbag +plastic bag +golf bag +sleeping bag +gunnysack +grocery bag +sporran +pocket +waist pack +fanny pack +hip pocket +patch pocket +flute +tumbler +water glass +bumper +liqueur glass +snifter +shot glass +beer glass +rummer +goblet +wineglass +cocktail shaker +saltshaker +pepper shaker +pannier +clothes hamper +hamper +breadbasket +shopping basket +wicker basket +milk can +beer can +soda can +pedicab +camper trailer +rolling stock +motor scooter +self-propelled vehicle +unicycle +wagon +bassinet +handcart +baby buggy +bicycle +horse-drawn vehicle +trailer +car +tricycle +armored vehicle +recreational vehicle +tracked vehicle +snowmobile +bulldozer +locomotive +streetcar +motor vehicle +tractor +forklift +armored personnel carrier +armored car +dune buggy +camper +van +shunter +diesel locomotive +electric locomotive +tank engine +traction engine +steam locomotive +diesel-electric locomotive +diesel-hydraulic locomotive +hearse +truck +amphibian +four-wheel drive +motorcycle +go-kart +car +snowplow +fire engine +van +trailer truck +transporter +garbage truck +ladder truck +tow truck +dump truck +tractor +pickup +delivery truck +moving van +passenger van +police van +bookmobile +trail bike +moped +beach wagon +loaner +Model T +electric +minivan +convertible +compact +cab +shooting brake +racer +hatchback +roadster +berlin +sport utility +sedan +jeep +limousine +cruiser +ambulance +used-car +stock car +subcompact +pace car +hot rod +sports car +coupe +covered wagon +cart +horse cart +dumpcart +jinrikisha +pony cart +oxcart +tea cart +laundry cart +serving cart +barrow +shopping cart +hand truck +bicycle-built-for-two +safety bicycle +push-bike +mountain bike +carriage +gharry +buggy +stagecoach +four-wheeler +baggage car +freight car +passenger car +cabin car +boxcar +tank car +nonsmoker +Pullman +dining car +smoker +recycling bin +ashcan +litterbin +sandbox +pig bed +briefcase +compact +dispatch case +kit +wallet +cardcase +portfolio +ditty bag +cigarette case +shoe +gun case +attache case +locket +writing desk +watch case +baggage +glasses case +hand luggage +satchel +bag +trunk +hatbox +garment bag +weekender +carpetbag +portmanteau +overnighter +valise +boiler +flagon +bowl +ladle +bottle +bottle +pot +pitcher +bathtub +mortar +bucket +drinking vessel +cream pitcher +wine bucket +pressure cooker +tub +inkwell +tin +basin +monstrance +autoclave +churn +barrel +tank +jar +censer +toilet bowl +fishbowl +scoop +soup ladle +smelling bottle +pop bottle +water bottle +jug +catsup bottle +gourd +pill bottle +carboy +flask +beer bottle +ink bottle +demijohn +whiskey bottle +cruet +wine bottle +carafe +phial +whiskey jug +water jug +hipflask +Erlenmeyer flask +thermos +canteen +vacuum flask +magnum +jeroboam +saucepot +teapot +Dutch oven +urn +stockpot +kettle +caldron +percolator +teakettle +coffeepot +coffee urn +samovar +tea urn +sitz bath +hot tub +footbath +mug +loving cup +tankard +coffee mug +toby +beer mug +bidet +birdbath +washbasin +baptismal font +beer barrel +wine cask +keg +gas tank +water heater +septic tank +aquarium +reservoir +water tower +rain barrel +canopic jar +amphora +cookie jar +beaker +urn +Mason jar +vase +crock +jampot +plate +tray +cat box +dustpan +chamberpot +salver +garbage +in-basket +hot-water bottle +ossuary +socket +ashtray +packet +bundle +deck +bale +hay bale +pack +ballot box +carton +coffin +shoebox +snuffbox +pencil box +crate +bandbox +window box +chest +strongbox +cereal box +mailbox +casket +bier +packing box +toolbox +toy box +coffer +hope chest +treasure chest +cedar chest +cash register +safe-deposit +cashbox +safe +tramway +chairlift +sidecar +public transport +semitrailer +horsebox +vehicle +ski tow +roll-on roll-off +trailer +shipping +litter +express +shuttle bus +train +bus +local +freight liner +passenger train +subway train +mail train +freight train +commuter +bullet train +trolleybus +minibus +school bus +steamroller +bumper car +rocket +military vehicle +missile +craft +sled +half track +tank +panzer +personnel carrier +Humvee +aircraft +vessel +spacecraft +hovercraft +heavier-than-air craft +stealth aircraft +lighter-than-air craft +hang glider +glider +helicopter +warplane +airplane +autogiro +bomber +amphibian +propeller plane +airliner +biplane +floatplane +jet +fighter +stealth bomber +seaplane +airbus +widebody aircraft +jumbojet +jetliner +stealth fighter +interceptor +airship +blimp +balloon +hot-air balloon +boat +trawler +yacht +ship +sailing vessel +bareboat +lifeboat +police boat +gondola +sea boat +barge +river boat +tugboat +punt +pilot boat +small boat +ferry +tender +canal boat +fireboat +motorboat +dredger +pontoon +houseboat +skiff +canoe +dinghy +racing boat +coracle +yawl +gig +jolly boat +rowing boat +kayak +outrigger canoe +dugout canoe +racing gig +racing skiff +speedboat +outboard motorboat +cabin cruiser +hydrofoil +shipwreck +wreck +passenger ship +pirate +lightship +hospital ship +steamer +cargo ship +sister ship +warship +liner +luxury liner +cargo liner +cruise ship +paddle steamer +sternwheeler +bottom +container ship +banana boat +oil tanker +submarine +guided missile cruiser +frigate +battleship +guided missile frigate +aircraft carrier +man-of-war +destroyer +attack submarine +nautilus +yawl +clipper +felucca +sloop +ketch +dhow +sailboat +bark +schooner +windjammer +trimaran +catamaran +catboat +space shuttle +space capsule +dogsled +bobsled +bobsled +stretcher +covered couch +telecommunication +vehicle +print media +broadcasting +telephone +radiotelephone +television +reception +radio +cable television +high-definition television +three-way calling +call +voice mail +press +journalism +magazine +newspaper +pulp +slick +comic book +news magazine +tabloid +daily +gazette +Fleet Street +yellow journalism +pillow +pad +sanitary napkin +beer mat +futon +carpet pad +range hood +screen +top +footwear +protective covering +cloak +wrapping +upholstery +cloth covering +mask +finger +floor cover +coating +canopy +flap +domino +folder +planking +earmuff +camouflage +shoji +cap +manhole cover +lid +radiator cap +bottlecap +nipple +clog +shoe +arctic +boot +flats +slipper +overshoe +sabot +slingback +chukka +saddle oxford +spectator pump +brogan +wing tip +walker +blucher +anklet +cleats +gaiter +Loafer +running shoe +oxford +bowling shoe +plimsoll +pump +sandal +chopine +pusher +talaria +flip-flop +espadrille +jodhpur +buskin +ski boot +hip boot +riding boot +rubber boot +Hessian boot +waders +cowboy boot +mule +bootee +cold frame +cloche +washboard +toecap +mulch +shield +bracer +screen +sheathing +bell jar +shade +shelter +splashboard +testudo +roof +faceplate +hood +sheath +cap +mask +facing +crystal +calash +armor +binder +binding +housing +blind +lining +plate +horseshoe +armor plate +breastplate +helmet +cannon +knee piece +pickelhaube +sallet +window screen +fire screen +windshield +mosquito net +lampshade +parasol +lean-to +bell cote +sentry box +birdhouse +canopy +kennel +awning +umbrella +gamp +gable roof +sunroof +mansard +dome +hip roof +tile roof +housetop +vault +slate roof +gambrel +thatch +cupola +geodesic dome +onion dome +barrel vault +ribbed vault +holster +scabbard +shoulder holster +hubcap +thimble +distributor cap +lens cap +gasmask +face mask +ski mask +catcher's mask +body armor +shield +chain mail +bulletproof vest +corselet +cuirass +cabinet +radome +boot +window blind +jalousie +curtain +shutter +Venetian blind +window shade +roller blind +theater curtain +shower curtain +bushing +brake lining +gift wrapping +envelope +cellophane +book jacket +jacket +plastic wrap +shoulder +pant leg +leg +back +cosy +bandage +bosom +slipcover +bedclothes +sleeve +blindfold +eyepatch +skirt +seat +Band Aid +swathe +cast +elastic bandage +quilt +afghan +blanket +bedspread +mattress cover +patchwork +eiderdown +crazy quilt +coverlet +quilted bedspread +raglan sleeve +long sleeve +rug +doormat +mat +scatter rug +shag rug +prayer rug +broadloom +stair-carpet +red carpet +Brussels carpet +fixative +gold plate +verdigris +paint +nail polish +gilt +couch +enamel +veneer +finger paint +enamel +encaustic +oil paint +water-base paint +latex paint +whitewash +earflap +pocket flap +lapel +tongue +revers +tent-fly +file folder +matchbook +plush +muslin +tarpaulin +velvet +batik +khaki +belting +sacking +diaper +voile +duffel +chenille +cotton flannel +toweling +crinoline +panting +chintz +felt +cotton +velveteen +satin +knit +sateen +print +flannel +webbing +gabardine +camouflage +worsted +cashmere +tartan +mohair +brocade +velour +shirttail +boucle +madras +net +paisley +yoke +percale +piece of cloth +moquette +terry +rayon +acetate rayon +cord +permanent press +chiffon +burlap +ticking +basket weave +lace +sheeting +georgette +poplin +denim +flannelette +shantung +camel's hair +nylon +drapery +gauze +organza +foulard +gingham +wool +suede cloth +taffeta +leatherette +tweed +organdy +canopy +etamine +damask +oilcloth +tapestry +broadcloth +pique +homespun +tricot +double knit +jersey +gauze +tulle +chicken wire +handkerchief +groundsheet +dustcloth +dishrag +towel +bandanna +gusset +bib +sail +patch +hand towel +paper towel +dishtowel +fore-and-aft sail +foresail +spinnaker +headsail +topsail +mainsail +balloon sail +jib +mizzen +gaff topsail +lugsail +staysail +lateen +flash +shoulder patch +narrow wale +Bedford cord +macrame +pillow lace +raft +life preserver +life buoy +Mae West +life jacket +stone +brick +lumber +bricks and mortar +tile +concrete +quoin +millstone +stele +hone +grindstone +curbstone +gravestone +firebrick +mud brick +clinker +adobe +strip +chipboard +slat +fingerboard +toothpick +hip tile +pantile +cornice +embellishment +graffito +epergne +necklet +marquetry +brass +garnish +arabesque +design +adornment +frieze +lambrequin +tattoo +mihrab +emblem +swastika +herringbone +spot +flag +banner +totem pole +crucifix +fleur-de-lis +macule +parhelion +jewelry +frill +lavaliere +peplum +bangle +cigar band +aigrette +bracelet +bling +pendant earring +necklace +ghat +path +road +passage +sidewalk +towpath +pedestrian crossing +highway +carriageway +thoroughfare +trail +divided highway +expressway +arterial road +autostrada +autobahn +street +street +piste +horse-trail +adit +conduit +passageway +tube +sluice +snorkel +waterspout +catheter +barrel +pipe +hookah +tailpipe +drain +culvert +soil pipe +tunnel +stairwell +gangway +catacomb +railroad tunnel +tape +band +inkle +adhesive tape +plaster +cellulose tape +headstall +girdle +tire +armlet +radial +car tire +tableware +riband +cutlery +glass +hollowware +platter +spoon +table knife +fork +Spork +soupspoon +teaspoon +sugar spoon +wooden spoon +iced-tea spoon +tablespoon +dessert spoon +case knife +butter knife +steak knife +tablefork +carving fork +airfield +telpherage +air terminal +airport +menagerie +storehouse +station +warehouse +granary +crib +mineshaft +ditch +irrigation ditch +furrow +consumer goods +linen +clothing +appliance +leisure wear +grey +blue +nightwear +protective garment +outerwear +neckpiece +knitwear +loungewear +apparel +collar +military uniform +headdress +pajama +garment +array +woman's clothing +overall +glove +accessory +black +footwear +attire +ready-to-wear +beachwear +man's clothing +street clothes +slip-on +shin guard +overall +pressure suit +arm guard +foul-weather gear +diving suit +apron +shoulder pad +coverall +chest protector +elbow pad +spacesuit +knee pad +gown +vestment +chasuble +academic gown +battle dress +fatigues +dress uniform +khakis +helmet +hood +turban +hat +cap +cowl +tiara +football helmet +hard hat +crash helmet +sunhat +fur hat +cowboy hat +bearskin +boater +snap-brim hat +fedora +cavalier hat +sombrero +tricorn +beaver +porkpie +bonnet +pith hat +bowler hat +millinery +cloche +pillbox +baseball cap +coonskin cap +shower cap +kepi +balaclava +fez +tam +beret +skullcap +cloth cap +ski cap +watch cap +bathing cap +mortarboard +yarmulke +beanie +head covering +scarf +romper +diaper +wraparound +robe +wet suit +legging +skirt +undergarment +separate +vest +shirt +overgarment +hose +burqa +trouser +trouser +straitjacket +fur +neckwear +sweat suit +leotard +swimsuit +hand-me-down +raglan +suit +sweater +gown +face veil +niqab +chador +mantilla +muffler +headscarf +tudung +feather boa +stole +hijab +khimar +dressing gown +kimono +abaya +bathrobe +gaiter +spat +overskirt +grass skirt +miniskirt +kilt +maxi +ballet skirt +dirndl +sarong +hoopskirt +petticoat +brassiere +foundation garment +singlet +garter belt +crinoline +underwear +body stocking +camisole +uplift +chemise +underpants +corset +panty girdle +roll-on +lingerie +long johns +BVD +undies +nightgown +bloomers +thong +bikini pants +briefs +pantie +drawers +work-shirt +kurta +jersey +dashiki +polo shirt +coat +cloak +snowsuit +surcoat +duffel coat +sheepskin coat +frock coat +lab coat +greatcoat +jacket +raincoat +capote +sack coat +fur coat +mess jacket +single-breasted jacket +bomber jacket +pea jacket +swallow-tailed coat +doublet +bolero +parka +oilskin +trench coat +mink +sable coat +poncho +toga virilis +toga +kameez +serape +tunic +shawl +caftan +short pants +pajama +sweat pants +salwar +breeches +chino +slacks +jodhpurs +pedal pusher +long trousers +jean +cords +Levi's +stretch pants +bellbottom trousers +buckskins +hot pants +Bermuda shorts +lederhosen +necktie +cravat +bolo tie +Windsor tie +bow tie +black tie +maillot +swimming trunks +bikini +double-breasted suit +pinstripe +single-breasted suit +pants suit +business suit +three-piece suit +two-piece +turtleneck +cardigan +sweatshirt +pullover +top +G-string +camisole +dress +bodice +blouse +halter +cocktail dress +sari +caftan +sundress +chemise +strapless +gown +jumper +dirndl +bridal gown +tea gown +ball gown +gauntlet +mitten +kid glove +belt +furnishing +money belt +holster +cartridge belt +hosiery +tights +sock +stocking +pantyhose +maillot +athletic sock +tabi +knee-high +argyle +nylons +Christmas stocking +formalwear +ensemble +outfit +ao dai +costume +fancy dress +costume +frock +sportswear +academic costume +disguise +hairpiece +dinner jacket +balldress +dinner dress +dress suit +Afro-wig +toupee +wig +dress hat +brace +athletic supporter +home appliance +dryer +vacuum +iron +trouser press +curling iron +white goods +sewing machine +serger +kitchen appliance +Hoover +travel iron +steam iron +dishwasher +refrigerator +washer +cooler +electric refrigerator +ice machine +deep-freeze +toaster +microwave +toaster oven +coffee maker +hot plate +waffle iron +disposal +espresso maker +stove +oven +food processor +ice maker +cookstove +electric range +gas range +Primus stove +broiler +rotisserie +Dutch oven +gas oven +hand blower +clothes dryer +spin dryer +tumble-dryer +wringer +bath towel +doily +Turkish towel +bed linen +pillow sham +sheet +tinfoil +plywood +doorplate +board +drumhead +panel +laminate +blackboard +snowboard +Sheetrock +surfboard +skateboard +sideboard +scoreboard +wainscot +headboard +chandelier +plumbing fixture +soap dish +toilet +shower +water faucet +flush toilet +potty seat +rope +cord +lasso +bungee +spun yarn +cordage +thread +bootlace +wick +lanyard +floss +woof +worsted +organism +cell +mistletoe +plant +animal +microorganism +bryophyte +person +fungus +benthos +flowering maple +vascular plant +strangler +aquatic +annual +houseplant +poisonous plant +agave +pteridophyte +spermatophyte +aquatic plant +herb +vine +woody plant +weed +cultivar +bulbous plant +succulent +American agave +maguey +maguey +sansevieria +dracaena +mother-in-law's tongue +fern ally +fern +club moss +scouring rush +ground pine +ground cedar +ground fir +flowering fern +lady fern +Boston fern +flowering fern +royal fern +tree fern +oak fern +common polypody +mountain fern +shield fern +deer fern +wood fern +American maidenhair fern +hart's-tongue +soft shield fern +holly fern +maidenhair +holly fern +water clover +sensitive fern +Christmas fern +angiopteris +soft tree fern +male fern +marginal wood fern +angiosperm +gymnosperm +barbados cherry +dicot +flower +wildflower +commelina +woodland star +nigella +black-eyed Susan +mistflower +calceolaria +toadflax +zinnia +centaury +Easter daisy +African violet +brompton stock +verbena +blue daisy +pink calla +Mexican sunflower +bloomer +achimenes +lychnis +painted daisy +treasure flower +globe amaranth +common valerian +rose moss +tidytips +common daisy +composite +ice plant +gentian +soapwort +anemone +veronica +larkspur +spring beauty +gazania +damask violet +Barberton daisy +bush violet +baby's breath +corydalis +calendula +sunflower +scabious +valerian +rue anemone +sandwort +candytuft +horn poppy +sandwort +poppy +stokes' aster +dahlia +Virginia spring beauty +petunia +orchid +hybrid petunia +African daisy +pink +African daisy +African daisy +daisy +common ageratum +oxeye daisy +columbine +calla lily +sweet alyssum +spathiphyllum +four o'clock +common marigold +cornflower +strawflower +silene +tuberose +common four-o'clock +rocket larkspur +bellwort +begonia +streptocarpus +Swan River daisy +wallflower +peony +love-in-a-mist +wallflower +cineraria +chrysanthemum +stock +sandwort +Malcolm stock +mountain sandwort +coneflower +ageratum +coneflower +sowbread +scorpionweed +cyclamen +delphinium +marigold +aster +cosmos +Mediterranean snapdragon +mullein pink +ragged robin +mayweed +tansy +dusty miller +corn chamomile +shasta daisy +everlasting +wingstem +rosinweed +oxeye daisy +strawflower +strawflower +cudweed +pearly everlasting +gentianella +agueweed +closed gentian +closed gentian +great yellow gentian +fringed gentian +marsh gentian +snowdrop anemone +wood anemone +wood anemone +germander speedwell +common speedwell +common sunflower +prairie sunflower +giant sunflower +Jerusalem artichoke +sweet scabious +field scabious +Iceland poppy +wind poppy +Iceland poppy +celandine +oriental poppy +opium poppy +celandine poppy +prickly poppy +California poppy +corn poppy +blue poppy +aerides +coelogyne +lady's slipper +Venus' slipper +cymbid +sobralia +spider orchid +spider orchid +Psychopsis papilio +liparis +butterfly orchid +butterfly orchid +butterfly orchid +oncidium +twayblade +twayblade +grass pink +brassavola +fragrant orchid +fly orchid +frog orchid +coral root +cattleya +lesser butterfly orchid +vanilla +short-spurred fragrant orchid +common spotted orchid +bog rose +ladies' tresses +odontoglossum +orchis +vanda +pansy orchid +Bletilla striata +rattlesnake plantain +marsh orchid +stanhopea +laelia +phaius +lizard orchid +caladenia +calypso +moth orchid +blue orchid +bee orchid +early spider orchid +masdevallia +bog rein orchid +European ladies' tresses +fen orchid +pogonia +fringed orchis +dendrobium +fly orchid +helleborine +helleborine +stelis +greater butterfly orchid +yellow lady's slipper +large yellow lady's slipper +common lady's-slipper +moccasin flower +butterfly orchid +male orchis +ragged orchid +purple-fringed orchid +stream orchid +Epipactis helleborine +sweet William +china pink +Japanese pink +carnation +cottage pink +maiden pink +meeting house +granny's bonnets +blue columbine +fire pink +white campion +bladder campion +red campion +wild pink +moss campion +wax begonia +hybrid tuberous begonia +rex begonia +crown daisy +corn marigold +florist's chrysanthemum +African marigold +French marigold +New England aster +bushy aster +Michaelmas daisy +Indian paintbrush +goldenrod +sand verbena +bitterroot +Indian pipe +heliopsis +meadow goldenrod +pasqueflower +fleabane +blazing star +edelweiss +coneflower +balloon flower +wild carrot +prairie gentian +desert sunflower +Arnica montana +butterweed +gaillardia +brittlebush +orange daisy +daisy fleabane +Mexican hat +long-head coneflower +cycad +welwitschia +encephalartos +dioon +macrozamia +false sago +water shamrock +water hyacinth +pistia +water lily +marsh plant +water nymph +European white lily +bog star +marsh marigold +wild calla +sedge +parnassia +skunk cabbage +skunk cabbage +cotton grass +nutgrass +common cotton grass +winter aconite +buttercup +phlox +willowherb +stapelia +skullcap +bedstraw +gumweed +kangaroo paw +common chickweed +hyssop +arum +common comfrey +borage +nasturtium +canna +loosestrife +toad lily +globe thistle +wild thyme +common fennel +bear's breech +ironweed +feverfew +monarda +physostegia +creeping bugle +vegetable +hedge nettle +plum tomato +ground cherry +flax +primrose +oxalis +kniphofia +boneset +chickweed +periwinkle +garden angelica +bugloss +Dutchman's breeches +pie plant +cow parsnip +butterbur +milk thistle +mouse-ear chickweed +yellow bells +lobelia +anise hyssop +banana +Joe-Pye weed +Joe-Pye weed +garden forget-me-not +evening primrose +spiderflower +sweet false chamomile +agrimonia +hepatica +medic +peperomia +geranium +viola +okra +bergenia +astrantia +aspidistra +thyme +common teasel +carnivorous plant +harvest-lice +nemophila +hawkweed +hawkweed +fleabane +plumbago +spiderwort +prickly poppy +common foxglove +stonecrop +garden lettuce +teasel +herb Paris +coltsfoot +basil +sainfoin +sneezeweed +cockscomb +baby blue-eyes +coleus +spurge nettle +arnica +sour dock +clover +mint +coreopsis +pimpernel +kidney vetch +foxglove +legume +reseda +forget-me-not +Virginia bluebell +pineapple +blueweed +anchusa +moss pink +common dandelion +false lupine +sage +chamomile +crucifer +chicory +broad-leaved plantain +bugle +milkweed +fireweed +spirea +inula +hemp nettle +garden nasturtium +pokeweed +moneywort +asparagus +Italian parsley +rhubarb +jewelweed +asparagus fern +sedum +yarrow +bird's foot trefoil +scarlet pimpernel +campanula +mayapple +painted nettle +pigweed +bleeding heart +achillea +snow-in-summer +gramineous plant +balsamroot +Abyssinian banana +herbage +astilbe +ginger +saxifrage +cow parsley +dill +common mullein +dead nettle +creeping buttercup +meadow buttercup +yellow bedstraw +sweet woodruff +caladium +cuckoopint +jack-in-the-pulpit +alocasia +taro +amorphophallus +bee balm +bee balm +artichoke +cardoon +tomatillo +tomatillo +English primrose +oxlip +cowslip +polyanthus +creeping oxalis +common wood sorrel +Bermuda buttercup +red-hot poker +poker plant +dwarf banana +Japanese banana +plantain +sundrops +common evening primrose +ivy geranium +cranesbill +fish geranium +rose geranium +meadow cranesbill +wild geranium +dove's foot geranium +herb robert +horned violet +field pansy +violet +dog violet +pale violet +bird's-foot violet +hedge violet +Venus's flytrap +pitcher plant +tropical pitcher plant +sundew +white clover +red clover +crimson clover +pennyroyal +water-mint +beach pea +chickpea +vetch +tufted vetch +bean +wild pea +scarlet runner +sieva bean +clary +common sage +clary sage +wild sage +purple sage +meadow clary +bok choy +mustard +cabbage +cauliflower +collard +broccoli +brussels sprout +garlic mustard +head cabbage +radish plant +bittercress +alyssum +field mustard +rape +radish +radish +lady's smock +crinkleroot +butterfly weed +swamp milkweed +tussock bellflower +Canterbury bell +clustered bellflower +peach bells +giant bamboo +grass +fescue +cordgrass +feather reed grass +reed grass +orchard grass +cereal +broom beard grass +tall oat grass +tallgrass +St. Augustine grass +pampas grass +grama +dallisgrass +zoysia +rye grass +brome +fountain grass +rye +popcorn +wheat +millet +sorghum +panic grass +goose grass +switch grass +common ginger +shellflower +meadow saxifrage +purple saxifrage +white dead nettle +henbit +ground ivy +blue pea +purple clematis +black-eyed Susan +bougainvillea +butterfly pea +butterfly pea +bindweed +kudzu +Boston ivy +squash +yellow jasmine +wax plant +morning glory +liana +Japanese wistaria +allamanda +field bindweed +common allamanda +passionflower +convolvulus +gourd +grape +Chinese gooseberry +summer squash +winter squash +pumpkin +spaghetti squash +yellow squash +acorn squash +winter crookneck +cypress vine +Japanese morning glory +moonflower +golden pothos +ceriman +jade vine +pothos +love-in-a-mist +maypop +granadilla +sweet melon +bottle gourd +net melon +winter melon +cantaloupe +Sauvignon grape +fox grape +wild indigo +shrub +tree +raspberry +lupine +abelia +banksia +bird pepper +sea holly +guelder rose +crape myrtle +castor-oil plant +spirea +hydrangea +fuchsia +redberry +saltbush +false indigo +bridal wreath +protea +Oregon grape +grevillea +gorse +rockrose +cowberry +subshrub +honeypot +California fuchsia +sumac +jasmine +impala lily +currant +axseed +mimosa +southern buckthorn +flowering quince +yucca +purple heather +waratah +mallow +strawberry tree +mock orange +honeysuckle +spurge +kalmia +bush hibiscus +weigela +Christmasberry +angel's trumpet +angel's trumpet +gooseberry +dusty miller +croton +Pyracantha +forsythia +artemisia +silversword +waratah +philadelphus +common lilac +saltwort +calliandra +wahoo +bird of paradise +cape jasmine +camellia +night jasmine +rose +mountain laurel +cotoneaster +rhododendron +frangipani +broom +desert pea +lavender +butterfly bush +deutzia +hortensia +burdock +prairie smoke +centaury +sea lavender +common mugwort +bird's foot trefoil +large periwinkle +great burdock +St John's wort +eriogonum +purple loosestrife +loosestrife +mountain avens +matilija poppy +bur marigold +wild lupine +marguerite +dusty miller +great knapweed +knapweed +creeping St John's wort +klammath weed +common St John's wort +common jasmine +winter jasmine +Adam's needle +bear grass +Joshua tree +Spanish dagger +hollyhock +rose mallow +common mallow +marsh mallow +musk mallow +hibiscus +althea +rose mallow +cotton rose +woodbine +trumpet honeysuckle +Japanese honeysuckle +poinsettia +crown of thorns +damask rose +musk rose +azalea +rosebay +swamp azalea +common broom +woodwaxen +English lavender +spike lavender +French lavender +locust tree +kowhai +bottle-tree +timber tree +linden +bonsai +snag +hackberry +pepper tree +Japanese oak +European hackberry +cork tree +birch +star anise +red silk-cotton tree +roble +common alder +fig tree +Japanese pagoda tree +albizzia +European hornbeam +cassia +coral tree +neem +white mangrove +Chinese parasol tree +bayberry +yellowwood +elm +alder +prickly ash +angiospermous tree +chestnut +cabbage bark +ash +beech +fringe tree +golden shower tree +lead tree +palm +balata +sapling +black beech +acacia +coffee +gymnospermous tree +ceibo +incense tree +lacebark +shade tree +pollard +gum tree +wild medlar +hornbeam +willow +textile screw pine +mescal bean +Brazilian rosewood +pandanus +white mangrove +oak +bean tree +plane tree +blackwood +coralwood +Kentucky coffee tree +black locust +honey locust +flame tree +flame tree +kurrajong +American basswood +silver lime +black birch +silver birch +swamp birch +downy birch +grey birch +golden fig +India-rubber tree +fig +banyan +pipal +rain tree +silk tree +smooth-leaved elm +American elm +English elm +cedar elm +myrtle +mangrove +magnolia +Queen's crape myrtle +looking-glass plant +tulip tree +maple +nut tree +redbud +baobab +poplar +tree of heaven +ailanthus +dogwood +holly +cacao +laurel +mountain ebony +kapok +sorrel tree +cacao bean +Spanish elm +rowan +mountain ash +royal poinciana +iron tree +fruit tree +sweet bay +southern magnolia +star magnolia +umbrella tree +box elder +red maple +hedge maple +Norway maple +Japanese maple +sycamore +California box elder +silver maple +sugar maple +Oregon maple +cashew +walnut +hazelnut +black walnut +English walnut +black poplar +aspen +cottonwood +white poplar +quaking aspen +Eastern cottonwood +black cottonwood +cornelian cherry +bunchberry +common European dogwood +common white dogwood +bearberry +inkberry +true laurel +cassia +citrus +mulberry +jackfruit +pomegranate +pawpaw +persimmon +carambola +plum +almond tree +durian +papaya +olive tree +longan +pear +loquat +medlar +peach +white mulberry +olive +litchi +Japanese apricot +rambutan +apple tree +Japanese persimmon +mango +breadfruit +guava +guava +jaboticaba +cherry +Surinam cherry +lime +mandarin +orange +kumquat +lemon +pomelo +grapefruit +clementine +tangerine +sweet orange +sour orange +bergamot +cherry plum +Allegheny plum +flowering almond +almond +flowering almond +crab apple +apple +wild apple +Southern crab apple +Bechtel crab +Iowa crab +sour cherry +flowering cherry +wild cherry +sweet cherry +chokecherry +Japanese flowering cherry +oriental cherry +fuji +hagberry tree +black cherry +Ozark chinkapin +American chestnut +pumpkin ash +mountain ash +manna ash +European ash +red ash +weeping beech +American beech +copper beech +bamboo palm +wine palm +fan palm +royal palm +cabbage palm +cabbage palm +sago palm +miniature fan palm +lady palm +feather palm +coconut +cabbage palm +carnauba +caranday +palmyra +cabbage palmetto +key palm +saw palmetto +palmetto +date palm +oil palm +silver wattle +wattle +huisache +ginkgo +conifer +kauri +green douglas fir +miro +cedar +cedar +douglas fir +matai +arborvitae +spruce +yew +araucaria +cypress +metasequoia +pine +fir +larch +hemlock +cedar of Lebanon +Atlas cedar +deodar +southern white cedar +incense cedar +Oregon cedar +Japanese cedar +Oriental arborvitae +American arborvitae +western red cedar +Colorado spruce +white spruce +Norway spruce +red spruce +black spruce +Sitka spruce +oriental spruce +bunya bunya +monkey puzzle +Monterey cypress +Arizona cypress +Italian cypress +Scotch pine +pond pine +pitch pine +table-mountain pine +ancient pine +stone pine +Jeffrey pine +loblolly pine +Swiss pine +spruce pine +white pine +red pine +Japanese black pine +Swiss mountain pine +black pine +Monterey pine +yellow pine +Torrey pine +shore pine +bristlecone pine +whitebark pine +western white pine +longleaf pine +ponderosa +silver fir +Fraser fir +Alpine fir +amabilis fir +lowland fir +balsam fir +European silver fir +white fir +western larch +American larch +eastern hemlock +western hemlock +mountain hemlock +gumbo-limbo +elephant tree +sweet gum +eucalyptus +sour gum +liquidambar +snow gum +mountain ash +black mallee +alpine ash +red gum +red gum +blue gum +osier +pussy willow +bay willow +weeping willow +swamp willow +purple willow +common osier +European turkey oak +red oak +cork oak +black oak +live oak +chestnut oak +bluejack oak +pin oak +post oak +shingle oak +white oak +laurel oak +northern red oak +southern red oak +southern live oak +canyon oak +coast live oak +chinquapin oak +basket oak +swamp chestnut oak +bur oak +Oregon white oak +common oak +tamarind +catalpa +carob +California sycamore +American sycamore +London plane +lightwood +black mangrove +wild raspberry +black raspberry +bluebonnet +Texas bluebonnet +thistle +cat's-ear +corn cockle +yellow rocket +fireweed +stinging nettle +horseweed +stemless carline thistle +musk thistle +cotton thistle +plume thistle +field thistle +bull thistle +Canada thistle +hippeastrum +narcissus +iridaceous plant +fritillary +liliaceous plant +star-of-Bethlehem +daffodil +jonquil +jonquil +iris +blue-eyed grass +blackberry-lily +dwarf iris +dwarf iris +beardless iris +bearded iris +Japanese iris +German iris +snake's head fritillary +crown imperial +dogtooth violet +lily +African lily +grape hyacinth +common camas +false lily of the valley +common hyacinth +camas +clintonia +lemon lily +squaw grass +scilla +tulip +alliaceous plant +fawn lily +glacier lily +yellow adder's tongue +Turk's-cap +Turk's-cap +tiger lily +tiger lily +mountain lily +Easter lily +tassel hyacinth +common grape hyacinth +Tulipa gesneriana +Darwin tulip +garlic chive +wild garlic +Hottentot fig +livingstone daisy +cactus +nopal +nopal +barrel cactus +night-blooming cereus +night-blooming cereus +night-blooming cereus +cholla +echinocactus +mammillaria +feather ball +prickly pear +crab cactus +saguaro +Christmas cactus +hedgehog cactus +golden barrel cactus +flamingo flower +anthurium +gloxinia +baneberry +red baneberry +poison ivy +gloriosa +monkshood +American holly +oleander +poison ash +herbivore +big game +thoroughbred +creepy-crawly +young +domestic animal +pet +critter +larva +feeder +male +pest +omnivore +predator +chordate +work animal +invertebrate +female +marine animal +scavenger +hexapod +mate +prey +carnivore +young mammal +orphan +spat +young bird +hatchling +foal +kitten +calf +pup +calf +lamb +baby +puppy +suckling +cub +piglet +nestling +fledgling +head +stray +feeder +tadpole +caterpillar +nymph +doodlebug +tobacco hornworm +cabbageworm +tomato hornworm +silkworm +cutworm +woolly bear +measuring worm +armyworm +silkworm +tussock caterpillar +tent caterpillar +colt +ridgeling +sire +sea squirt +ascidian +vertebrate +aquatic vertebrate +amphibian +mammal +baby +fetus +quadruped +reptile +bird +fish +lamprey +teleost fish +food fish +elasmobranch +ganoid +trumpetfish +pipefish +seahorse +spiny-finned fish +soft-finned fish +needlefish +beluga +gar +bowfin +paddlefish +sturgeon +percoid fish +dragonet +frogfish +barracuda +soldierfish +goosefish +scorpaenoid +flatfish +great barracuda +plectognath +snook +perch +perch +dolphinfish +freshwater bass +scombroid +bass +parrotfish +sea bream +grunt +flathead +bluefish +carangid fish +damselfish +butterfly fish +mudskipper +pike +goby +tautog +sunfish +snapper +snapper +sciaenid fish +wolffish +cichlid +wrasse +yellow perch +European perch +walleye +mackerel +skipjack +black marlin +sailfish +marlin +bonito +tuna +wahoo +Spanish mackerel +Spanish mackerel +cero +king mackerel +bluefin +yellowfin +jack +permit +scad +crevalle jack +kingfish +amberjack +yellowtail +horse mackerel +horse mackerel +clown anemone fish +sergeant major +anemone fish +chaetodon +rock beauty +angelfish +northern pike +pickerel +muskellunge +black bass +pumpkinseed +freshwater bream +bluegill +crappie +smallmouth +largemouth +sea trout +croaker +kingfish +mulloway +red drum +white croaker +white croaker +scorpaenid +flathead +scorpionfish +lionfish +stonefish +rockfish +plaice +flounder +halibut +cowfish +boxfish +ocean sunfish +puffer +spiny puffer +triggerfish +balloonfish +porcupinefish +tarpon +bonefish +pollack +anchovy +lizardfish +catfish +cypriniform fish +eel +clupeid fish +European catfish +flathead catfish +channel catfish +blue catfish +characin +electric eel +cyprinodont +loach +cyprinid +topminnow +piranha +cardinal tetra +tetra +killifish +striped killifish +guppy +swordtail +carp +minnow +tench +crucian carp +goldfish +gudgeon +platy +mosquitofish +conger +tuna +moray +sardine +pilchard +sea bass +trout +salmon +barracouta +grouper +striped bass +jewfish +hind +sea trout +brook trout +rainbow trout +brown trout +lake trout +chinook +Atlantic salmon +redfish +coho +landlocked salmon +shark +ray +sand tiger +angel shark +nurse shark +requiem shark +smooth dogfish +hammerhead +mackerel shark +whale shark +bull shark +blue shark +sandbar shark +blacktip shark +whitetip shark +tiger shark +lemon shark +whitetip shark +smoothhound +great white shark +mako +porbeagle +stingray +electric ray +spotted eagle ray +Atlantic manta +manta +skate +eagle ray +salamander +frog +spotted salamander +newt +European fire salamander +slender salamander +ambystomid +eft +common newt +red eft +spotted salamander +axolotl +tiger salamander +true toad +true frog +tailed frog +crapaud +tree toad +tree frog +natterjack +Eurasian green toad +bufo +American toad +agua +western toad +European toad +grass frog +wood-frog +bullfrog +leopard frog +pickerel frog +green frog +spring peeper +chorus frog +placental +tusker +monotreme +marsupial +female mammal +aardvark +livestock +insectivore +hyrax +doe +edentate +stag +bull +primate +carnivore +bat +aquatic mammal +lagomorph +rock hyrax +yearling +rodent +cow +pachyderm +buck +pangolin +ungulate +shrew +hedgehog +peba +sloth +armadillo +anteater +two-toed sloth +two-toed sloth +three-toed sloth +ant bear +tamandua +simian +tarsier +homo +ape +lemur +monkey +Homo sapiens sapiens +Homo sapiens +Neandertal man +anthropoid ape +lesser ape +great ape +siamang +gibbon +chimpanzee +orangutan +gorilla +pygmy chimpanzee +central chimpanzee +western lowland gorilla +mountain gorilla +silverback +indri +Madagascar cat +potto +galago +slow loris +Old World monkey +New World monkey +baboon +vervet +proboscis monkey +colobus +patas +macaque +guenon +langur +chacma +mandrill +Barbary ape +rhesus +spider monkey +marmoset +squirrel monkey +titi +capuchin +howler monkey +tamarin +pygmy marmoset +procyonid +feline +viverrine +canine +musteline mammal +bear +coati +common raccoon +lesser panda +raccoon +kinkajou +giant panda +big cat +cat +jaguar +tiger +leopard +cheetah +lion +snow leopard +tigress +Bengal tiger +tiger cub +lioness +lion cub +domestic cat +wildcat +tabby +tiger cat +tabby +tortoiseshell +Manx +Egyptian cat +Abyssinian +kitty +Angora +Persian cat +Burmese cat +Siamese cat +alley cat +tom +mouser +margay +ocelot +lynx +cougar +European wildcat +serval +manul +sand cat +common lynx +bobcat +caracal +Canada lynx +meerkat +genet +mongoose +slender-tailed meerkat +suricate +dog +wild dog +wolf +bitch +jackal +fox +hyena +pug +corgi +Great Pyrenees +Brabancon griffon +poodle +cur +Leonberg +griffon +dalmatian +pooch +spitz +toy dog +hunting dog +working dog +basenji +Mexican hairless +Newfoundland +lapdog +Cardigan +Pembroke +standard poodle +toy poodle +miniature poodle +Pomeranian +keeshond +chow +Samoyed +toy spaniel +Shih-Tzu +toy terrier +Maltese dog +Japanese spaniel +Chihuahua +Pekinese +King Charles spaniel +Blenheim spaniel +papillon +terrier +Rhodesian ridgeback +sausage dog +sporting dog +hound +dachshund +Dandie Dinmont +schnauzer +wirehair +Airedale +West Highland white terrier +Kerry blue terrier +Norfolk terrier +Border terrier +Yorkshire terrier +wire-haired fox terrier +Bedlington terrier +Tibetan terrier +silky terrier +Lhasa +Scotch terrier +cairn +Boston bull +fox terrier +Australian terrier +bullterrier +Norwich terrier +Irish terrier +rat terrier +soft-coated wheaten terrier +standard schnauzer +giant schnauzer +miniature schnauzer +Lakeland terrier +Welsh terrier +Sealyham terrier +Staffordshire bullterrier +American Staffordshire terrier +Manchester terrier +toy Manchester +water dog +pointer +bird dog +setter +spaniel +retriever +vizsla +German short-haired pointer +Gordon setter +English setter +Irish setter +cocker spaniel +water spaniel +springer spaniel +Brittany spaniel +clumber +Sussex spaniel +Irish water spaniel +English springer +Welsh springer spaniel +flat-coated retriever +golden retriever +curly-coated retriever +Chesapeake Bay retriever +Labrador retriever +otterhound +bloodhound +wolfhound +basset +Ibizan hound +Norwegian elkhound +coonhound +Saluki +Afghan hound +black-and-tan coonhound +bluetick +Scottish deerhound +redbone +foxhound +beagle +Weimaraner +greyhound +borzoi +Irish wolfhound +English foxhound +Walker hound +whippet +Italian greyhound +Great Dane +watchdog +Eskimo dog +Tibetan mastiff +sled dog +Saint Bernard +French bulldog +police dog +bulldog +Sennenhunde +bull mastiff +shepherd dog +boxer +mastiff +kuvasz +housedog +pinscher +schipperke +Doberman +miniature pinscher +affenpinscher +Siberian husky +malamute +Greater Swiss Mountain dog +EntleBucher +Bernese mountain dog +Appenzeller +Belgian sheepdog +kelpie +Shetland sheepdog +komondor +Border collie +collie +Rottweiler +Old English sheepdog +German shepherd +briard +Bouvier des Flandres +groenendael +malinois +African hunting dog +dingo +dhole +coyote +wolf pup +red wolf +white wolf +timber wolf +red fox +red fox +kit fox +Arctic fox +grey fox +kit fox +spotted hyena +striped hyena +mink +black-footed ferret +striped skunk +pine marten +sea otter +otter +weasel +polecat +glutton +skunk +badger +ferret +river otter +Eurasian otter +ice bear +American black bear +bear cub +Asiatic black bear +brown bear +sloth bear +grizzly +Alaskan brown bear +carnivorous bat +flying fox +fruit bat +brown bat +vespertilian bat +pallid bat +pipistrelle +cetacean +sea cow +pinniped mammal +whale +toothed whale +baleen whale +dolphin +bottle-nosed whale +porpoise +common dolphin +bottlenose dolphin +pilot whale +killer whale +white whale +Pacific bottlenose dolphin +Atlantic bottlenose dolphin +grey whale +rorqual +blue whale +lesser rorqual +finback +manatee +dugong +walrus +seal +earless seal +eared seal +elephant seal +harbor seal +harp seal +fur seal +fur seal +sea lion +California sea lion +Australian sea lion +Steller sea lion +pika +leporid +rabbit +hare +eastern cottontail +wood rabbit +bunny +European rabbit +lapin +Angora +rabbit ears +snowshoe hare +European hare +jackrabbit +chinchilla +rat +capybara +golden hamster +water vole +porcupine +coypu +vole +beaver +hamster +prairie dog +squirrel +marmot +blacktail prairie dog +cavy +gerbil +mouse +muskrat +gopher +brown rat +black rat +chipmunk +ground squirrel +eastern chipmunk +tree squirrel +rock squirrel +mantled ground squirrel +eastern grey squirrel +red squirrel +black squirrel +American red squirrel +fox squirrel +hoary marmot +groundhog +aperea +guinea pig +field mouse +house mouse +elephant +African elephant +Indian elephant +even-toed ungulate +odd-toed ungulate +ruminant +camel +swine +llama +vicuna +collared peccary +hippopotamus +peccary +pronghorn +deer +bovid +giraffe +okapi +woodland caribou +caribou +fallow deer +elk +hart +mule deer +fawn +red deer +muntjac +Virginia deer +wapiti +Japanese deer +roe deer +black-tailed deer +wild sheep +bison +musk ox +Old World buffalo +bovine +antelope +sheep +goat antelope +goat +aoudad +mountain sheep +Dall sheep +bighorn +mouflon +American bison +wisent +carabao +water buffalo +Cape buffalo +Brahman +ox +zebu +cattle +yak +gaur +beef +ox +bull +bullock +heifer +cow +dairy cattle +longhorn +Charolais +Hereford +Durham +Aberdeen Angus +Galloway +Friesian +Brown Swiss +kudu +addax +blackbuck +waterbuck +eland +steenbok +dik-dik +gnu +harnessed antelope +gerenuk +sassaby +impala +greater kudu +sable antelope +hartebeest +bongo +gemsbok +oryx +gazelle +nyala +bushbuck +Thomson's gazelle +springbok antelope +domestic sheep +black sheep +ewe +wether +ram +mountain goat +chamois +takin +nanny +kid +ibex +Angora +domestic goat +billy +wild goat +Bactrian camel +Arabian camel +wild boar +warthog +boar +hog +guanaco +alpaca +rhinoceros +tapir +equine +Malayan tapir +Indian rhinoceros +black rhinoceros +white rhinoceros +horse +zebra +ass +bay +broodmare +racehorse +palomino +wild horse +pinto +hack +roan +male horse +post horse +liver chestnut +tarpan +saddle horse +chestnut +harness horse +polo pony +workhorse +mare +pony +pony +sorrel +yearling +thoroughbred +trotting horse +stud +stallion +gelding +Tennessee walker +hack +cavalry horse +grey +Morgan +buckskin +dun +Arabian +quarter horse +cob +hackney +plow horse +farm horse +draft horse +carthorse +Percheron +Clydesdale +shire +cayuse +bronco +mustang +Welsh pony +Shetland pony +Exmoor +common zebra +mountain zebra +grevy's zebra +jennet +burro +domestic ass +echidna +platypus +echidna +kangaroo +koala +wombat +common opossum +opossum +dasyurid marsupial +phalanger +giant kangaroo +wallaby +rock wallaby +tree wallaby +Tasmanian devil +numbat +chelonian +diapsid +turtle +Western box turtle +box turtle +common snapping turtle +terrapin +soft-shelled turtle +painted turtle +sea turtle +snapping turtle +slider +tortoise +mud turtle +cooter +hawksbill turtle +loggerhead +green turtle +leatherback turtle +ridley +Pacific ridley +Atlantic ridley +giant tortoise +gopher tortoise +European tortoise +desert tortoise +crocodilian reptile +snake +tuatara +lizard +dinosaur +alligator +crocodile +American alligator +caiman +Asian crocodile +African crocodile +blind snake +viper +sea snake +elapid +constrictor +colubrid snake +horned viper +asp +adder +puff adder +pit viper +water moccasin +copperhead +rattlesnake +ground rattler +massasauga +diamondback +Mojave rattlesnake +timber rattlesnake +prairie rattlesnake +Western diamondback +sidewinder +rock rattlesnake +speckled rattlesnake +cobra +green mamba +taipan +copperhead +mamba +coral snake +coral snake +Indian cobra +hamadryad +boa +python +rosy boa +boa constrictor +anaconda +reticulated python +carpet snake +rock python +blacksnake +garter snake +bull snake +hognose snake +rat snake +whip-snake +water snake +green snake +racer +green snake +thunder snake +ringneck snake +vine snake +king snake +night snake +ribbon snake +common garter snake +pine snake +gopher snake +corn snake +black rat snake +grass snake +common water snake +water moccasin +smooth green snake +rough green snake +milk snake +common kingsnake +banded gecko +chameleon +monitor +skink +Gila monster +Komodo dragon +whiptail +iguanid +agamid +gecko +African chameleon +lacertid lizard +anguid lizard +horned lizard +tree lizard +chuckwalla +American chameleon +basilisk +side-blotched lizard +spiny lizard +collared lizard +common iguana +marine iguana +leopard lizard +western fence lizard +fence lizard +agama +mountain devil +frilled lizard +green lizard +sand lizard +blindworm +alligator lizard +ornithischian +tyrannosaur +stegosaur +triceratops +bird of passage +aquatic bird +passerine +cock +hummingbird +piciform bird +coraciiform bird +quetzal +bird of prey +caprimulgiform bird +cuculiform bird +gamecock +ratite +gallinaceous bird +trogon +parrot +carinate +dickeybird +hen +wading bird +swan +gallinule +seabird +waterfowl +heron +crested cariama +trumpeter +bustard +ibis +stork +whooping crane +crane +limpkin +chunga +flamingo +rail +spoonbill +shoebill +shorebird +great blue heron +night heron +little blue heron +boatbill +great white heron +egret +bittern +black-crowned night heron +yellow-crowned night heron +great white heron +little egret +snowy egret +American egret +cattle egret +least bittern +American bittern +wood ibis +sacred ibis +marabou +black stork +white stork +saddlebill +jabiru +policeman bird +wood ibis +notornis +weka +spotted crake +crake +coot +Old World coot +American coot +common spoonbill +roseate spoonbill +plover +godwit +Hudsonian godwit +stilt +stone curlew +oystercatcher +stilt +American woodcock +snipe +woodcock +avocet +sandpiper +European curlew +pratincole +curlew +phalarope +golden plover +ruddy turnstone +killdeer +lapwing +turnstone +piping plover +black-necked stilt +black-winged stilt +whole snipe +Wilson's snipe +great snipe +dowitcher +tattler +greenshank +willet +curlew sandpiper +sanderling +redshank +spotted sandpiper +knot +red-backed sandpiper +upland sandpiper +least sandpiper +pectoral sandpiper +ruff +European sandpiper +yellowlegs +greater yellowlegs +lesser yellowlegs +red phalarope +Wilson's phalarope +pen +cygnet +trumpeter +coscoroba +mute swan +cob +whooper +black swan +tundra swan +whistling swan +Bewick's swan +purple gallinule +European gallinule +moorhen +coastal diving bird +pelagic bird +grebe +auk +loon +pelecaniform seabird +sphenisciform seabird +puffin +larid +jaeger +skimmer +sea swallow +gull +tern +ivory gull +mew +laughing gull +black-backed gull +kittiwake +herring gull +skua +parasitic jaeger +petrel +albatross +wandering albatross +shearwater +storm petrel +fulmar +red-necked grebe +great crested grebe +pied-billed grebe +black-necked grebe +dabchick +razorbill +guillemot +auklet +murre +black guillemot +common murre +pigeon guillemot +frigate bird +cormorant +snakebird +pelican +gannet +water turkey +tropic bird +white pelican +Old world white pelican +solan +booby +penguin +emperor penguin +jackass penguin +king penguin +rock hopper +Adelie +horned puffin +tufted puffin +Atlantic puffin +anseriform bird +goose +duck +blue goose +barnacle goose +snow goose +Chinese goose +common brant goose +brant +gosling +greylag +gander +honker +diving duck +scaup +shelduck +wood drake +bufflehead +black duck +mandarin duck +American widgeon +pintail +mallard +sheldrake +teal +Barrow's goldeneye +quack-quack +wild duck +ruddy duck +wood duck +drake +muscovy duck +shoveler +dabbling duck +widgeon +sea duck +redhead +pochard +goldeneye +canvasback +duckling +greater scaup +lesser scaup +garganey +greenwing +bluewing +eider +old squaw +merganser +scoter +common scoter +American merganser +red-breasted merganser +hooded merganser +smew +goosander +wren +broadbill +tyrannid +oscine +scrubbird +sparrow +marsh wren +rock wren +winter wren +cactus wren +house wren +Carolina wren +ovenbird +manakin +pitta +woodhewer +New World flycatcher +kingbird +phoebe +pewee +vermillion flycatcher +western wood pewee +scissortail +grey kingbird +eastern kingbird +Arkansas kingbird +warbler +brown creeper +corvine bird +starling +pipit +titmouse +fairy bluebird +thrush +hedge sparrow +wood swallow +shrike +lark +golden oriole +Old World flycatcher +thrasher +vireo +tanager +honeycreeper +finch +bowerbird +water ouzel +accentor +mockingbird +brown thrasher +skylark +catbird +satin bowerbird +waxwing +red-eyed vireo +New World oriole +Old World oriole +babbler +swallow +creeper +songbird +Australian magpie +wagtail +meadow pipit +spotted flycatcher +weaver +nuthatch +greater whitethroat +New World warbler +kinglet +Old World warbler +gnatcatcher +lesser whitethroat +yellowthroat +common yellowthroat +ovenbird +parula warbler +Blackburn +yellow warbler +American redstart +yellow-breasted chat +Audubon's warbler +Wilson's warbler +Cape May warbler +myrtle warbler +goldcrest +ruby-crowned kinglet +tailorbird +sedge warbler +wren warbler +blackcap +rook +Clark's nutcracker +jackdaw +European magpie +jay +raven +crow +magpie +American crow +blue jay +Canada jay +common starling +hill myna +myna +bushtit +chickadee +blue tit +tufted titmouse +Carolina chickadee +black-capped chickadee +robin +robin +hermit thrush +redwing +fieldfare +song thrush +nightingale +blackbird +missel thrush +ring ouzel +wheatear +bluebird +thrush nightingale +bluethroat +redstart +bulbul +Old World chat +wood thrush +stonechat +whinchat +butcherbird +loggerhead shrike +bush shrike +northern shrike +European shrike +western tanager +summer tanager +scarlet tanager +serin +bullfinch +grosbeak +goldfinch +New World sparrow +crossbill +bunting +linnet +cardinal +siskin +common canary +towhee +purple finch +honeycreeper +brambling +New World goldfinch +pine siskin +redpoll +dark-eyed junco +house finch +chaffinch +canary +redpoll +junco +pine grosbeak +evening grosbeak +hawfinch +song sparrow +white-throated sparrow +tree sparrow +field sparrow +white-crowned sparrow +swamp sparrow +chipping sparrow +indigo bunting +reed bunting +snow bunting +ortolan +yellowhammer +cedar waxwing +Bohemian waxwing +bobolink +meadowlark +northern oriole +orchard oriole +New World blackbird +eastern meadowlark +western meadowlark +Bullock's oriole +Baltimore oriole +purple grackle +cowbird +grackle +red-winged blackbird +white-bellied swallow +tree swallow +martin +barn swallow +cliff swallow +house martin +bank martin +butcherbird +currawong +Java sparrow +zebra finch +red-breasted nuthatch +European nuthatch +white-breasted nuthatch +English sparrow +tree sparrow +thornbill +Archilochus colubris +jacamar +woodpecker +barbet +toucanet +toucan +flicker +downy woodpecker +green woodpecker +sapsucker +wryneck +redheaded woodpecker +yellow-shafted flicker +red-breasted sapsucker +yellow-bellied sapsucker +kingfisher +roller +motmot +Euopean hoopoe +hornbill +European roller +hoopoe +bee eater +kookaburra +Eurasian kingfisher +belted kingfisher +vulture +hawk +secretary bird +eagle +owl +Old World vulture +New World vulture +Egyptian vulture +bearded vulture +black vulture +griffon vulture +black vulture +buzzard +king vulture +condor +Andean condor +California condor +harrier +goshawk +red-shouldered hawk +honey buzzard +falcon +harrier eagle +Cooper's hawk +osprey +kite +rough-legged hawk +buzzard +sparrow hawk +marsh harrier +marsh hawk +carancha +gyrfalcon +peregrine +caracara +hobby +pigeon hawk +kestrel +sparrow hawk +white-tailed kite +swallow-tailed kite +black kite +eaglet +golden eagle +sea eagle +bald eagle +harpy +tawny eagle +fishing eagle +ern +tawny owl +owlet +spotted owl +screech owl +horned owl +screech owl +little owl +barn owl +scops owl +Old World scops owl +hawk owl +great horned owl +barred owl +long-eared owl +great grey owl +frogmouth +goatsucker +touraco +cuckoo +coucal +roadrunner +rhea +rhea +ostrich +emu +cassowary +domestic fowl +columbiform bird +brush turkey +red jungle fowl +jungle fowl +game bird +turkey cock +bantam +turkey +guinea fowl +chicken +cockerel +cock +Rhode Island red +chick +Orpington +hen +pullet +brood hen +sandgrouse +pigeon +domestic pigeon +dove +wood pigeon +rock dove +homing pigeon +roller +Streptopelia turtur +turtledove +Australian turtledove +mourning dove +phasianid +tinamou +grouse +pheasant +quail +partridge +tragopan +ring-necked pheasant +golden pheasant +peafowl +peahen +blue peafowl +peacock +green peafowl +bobwhite +California quail +northern bobwhite +red-legged partridge +Hungarian partridge +spruce grouse +prairie chicken +capercaillie +ruffed grouse +sage grouse +moorhen +black grouse +ptarmigan +cockateel +parakeet +cockatoo +poll +kea +African grey +macaw +amazon +lovebird +lory +popinjay +budgerigar +ring-necked parakeet +sulphur-crested cockatoo +pink cockatoo +rainbow lorikeet +lorikeet +beast of burden +draft animal +ctenophore +worm +mollusk +echinoderm +coelenterate +arthropod +sponge +nematode +annelid +flatworm +medicinal leech +earthworm +chiton +bivalve +cephalopod +gastropod +oyster +ark shell +clam +mussel +cockle +scallop +pearl oyster +soft-shell clam +quahog +giant clam +freshwater mussel +edible mussel +zebra mussel +octopod +chambered nautilus +cuttlefish +octopus +paper nautilus +sea hare +cowrie +conch +seasnail +ormer +tiger cowrie +sea slug +slug +snail +common limpet +whelk +nerita +edible snail +brown snail +garden snail +starfish +feather star +sand dollar +sea urchin +sea cucumber +brittle star +polyp +anthozoan +Portuguese man-of-war +jellyfish +sea pen +sea anemone +coral +stony coral +gorgonian +sea fan +mushroom coral +brain coral +centipede +crustacean +trilobite +millipede +arachnid +horseshoe crab +instar +insect +house centipede +daphnia +brachyuran +mantis shrimp +malacostracan crustacean +decapod crustacean +isopod +amphipod +pill bug +woodlouse +lobster +shrimp +hermit crab +prawn +crab +crayfish +Norway lobster +spiny lobster +American lobster +king crab +blue crab +rock crab +Dungeness crab +fiddler crab +European spider crab +scorpion +harvestman +acarine +spider +tick +mite +wood tick +orb-weaving spider +European wolf spider +tarantula +wolf spider +garden spider +black widow +black and gold garden spider +barn spider +orthopterous insect +hemipterous insect +neuropteron +dictyopterous insect +collembolan +mayfly +homopterous insect +dipterous insect +earwig +common European earwig +phasmid +pollinator +bug +pupa +walking stick +scorpion fly +beetle +heteropterous insect +stonefly +hymenopterous insect +lepidopterous insect +chrysalis +odonate +silverfish +worker bee +grasshopper +cricket +katydid +locust +true bug +bedbug +dobson +green lacewing +lacewing +mantis +praying mantis +cockroach +American cockroach +German cockroach +oriental cockroach +plant louse +cicada +meadow spittlebug +seventeen-year locust +mealybug +leafhopper +aphid +mosquito +crane fly +midge +fruit fly +fly +horse tick +robber fly +Asian tiger mosquito +common mosquito +bee fly +horsefly +flesh fly +blowfly +housefly +greenbottle +bluebottle +Colorado potato beetle +firefly +ground beetle +sawyer +ladybug +lamellicorn beetle +rove beetle +Asian longhorned beetle +leaf beetle +elaterid beetle +click beetle +tiger beetle +weevil +long-horned beetle +Hippodamia convergens +vedalia +scarabaeid beetle +stag beetle +rose chafer +June beetle +Japanese beetle +rhinoceros beetle +dung beetle +scarab +cockchafer +water strider +wheel bug +wasp +ichneumon fly +ant +bee +cicada killer +digger wasp +vespid +hornet +paper wasp +common wasp +giant hornet +yellow jacket +carpenter ant +fire ant +wood ant +carpenter bee +honeybee +mason bee +andrena +leaf-cutting bee +bumblebee +Africanized bee +black bee +butterfly +moth +lycaenid +nymphalid +sulphur butterfly +ringlet +monarch +cabbage butterfly +blue +hairstreak +copper +tortoiseshell +fritillary +admiral +banded purple +peacock +red-spotted purple +painted beauty +mourning cloak +viceroy +red admiral +white admiral +comma +small white +large white +cinnabar +saturniid +noctuid moth +hawkmoth +tea tortrix +geometrid +tineid +atlas moth +emperor +polyphemus moth +cecropia +luna moth +carpet moth +clothes moth +dragonfly +damselfly +hen +filly +dam +herpes +protoctist +herpes simplex +herpes zoster +cytomegalovirus +herpes varicella zoster +alga +protozoan +seagrass +pond scum +green algae +plasmodium +ameba +ciliate +paramecium +sphagnum +hepatica +liverwort +peer +birth +adult +juvenile +countrywoman +businessperson +native +celebrant +native +Filipino +male +Gemini +onlooker +queen +referee +commoner +expert +newcomer +face +demonstrator +orphan +Black woman +contestant +bullfighter +lowerclassman +candidate +friend +life +anomaly +actor +thrower +creature +child +sheep +scuba diver +dancer +garbage man +entertainer +lover +unfortunate +anti +defender +sphinx +Indian +patient +Slav +White +brick +recipient +religious person +rescuer +Latin +money handler +rich person +domestic partner +creator +consumer +worker +groom +boy scout +inhabitant +African +fan +eager beaver +leader +schoolmate +man +philatelist +advocate +eccentric +bad person +transvestite +citizen +communicator +nonworker +parrot +intellectual +nonsmoker +student +chameleon +combatant +platinum blond +appointee +unpleasant person +politician +ruler +ancient +spectator +right-hander +traveler +scientist +picker +female +acquaintance +Black +relative +beard +redhead +sleeper +computer user +associate +participant +member +raiser +groom +bride +commissioner +director +tribesman +board member +important person +professional +oldster +celebrity +very important person +serjeant-at-law +educator +health professional +teacher +reading teacher +schoolmaster +nurse +medical practitioner +pharmacist +head nurse +probationer +doctor +surgeon +specialist +house physician +cardiologist +radiologist +schoolchild +child +bairn +orphan +entrepreneur +baron +agent +merchant +certified public accountant +syndic +insurance broker +fishmonger +vintner +peddler +seller +male child +mother's boy +son +man +cub +farm boy +bat boy +Herr +hunk +Peter Pan +patriarch +adonis +young buck +stud +guy +patriarch +sleuth +archer +authority +military attache +therapist +technician +black belt +high priest +critic +taster +panelist +physical therapist +osteopath +player +athlete +rival +billiard player +medalist +seeded player +chess master +pool player +football player +tennis player +ball hawk +vaulter +runner +skater +acrobat +climber +diver +alpinist +soccer player +winger +tennis pro +forward +sport +basketball player +miler +ballplayer +gymnast +back +lineman +halfback +quarterback +tailback +skateboarder +speedskater +circus acrobat +aerialist +fielder +designated hitter +base runner +minor leaguer +first baseman +outfielder +right fielder +infielder +semifinalist +foe +matador +picador +banderillero +buddy +mate +flatmate +pitcher +closer +right-handed pitcher +folk dancer +square dancer +morris dancer +compere +master of ceremonies +caricaturist +performer +fire-eater +executant +dancer +juggler +puppeteer +actor +clown +musician +dancing-master +ballet dancer +understudy +starlet +tenor saxophonist +percussionist +guitarist +keyboardist +trumpeter +sitar player +singer +oboist +cellist +violist +flutist +organist +rock star +drummer +songster +bass +fiance +darling +fancier +soul mate +sweetheart +kisser +amputee +homeless +casualty +guard +fireman +zoo keeper +lawman +military policeman +attorney general +policeman +bobby +Mountie +detective +motorcycle cop +trooper +traffic cop +Kiliwa +Biloxi +Chickasaw +Kickapoo +Arab +white man +Omani +Bedouin +Yemeni +protegee +heiress +swami +Buddhist +Muslim +novitiate +religious +Muslimah +Sufi +mother +monk +Sister +treasurer +ratepayer +state treasurer +bursar +cobbler +artist +choreographer +farmer +musician +stylist +sculptor +press photographer +songwriter +arranger +beekeeper +breeder +agriculturist +drinker +policyholder +drinker +concert-goer +drunkard +beer drinker +maid +employee +assistant +gondolier +skilled worker +skidder +boatman +waiter +bartender +staff member +salesperson +workman +settler +breadwinner +waitress +salesman +gardener +laborer +mill-hand +hired hand +coal miner +horse wrangler +goat herder +farmhand +attendant +cog +model +escort +caddie +companion +lifeguard +steward +color guard +honor guard +cover girl +artist's model +electrician +official +falconer +balloonist +craftsman +pilot +blacksmith +trawler +mender +baker +serviceman +painter +diplomat +judge +incumbent +appointee +presbyter +ambassador +high commissioner +plenipotentiary +glassblower +carpenter +coiffeur +machinist +wright +hairdresser +fighter pilot +copilot +artilleryman +Navy SEAL +military officer +enlisted person +noncommissioned officer +commanding officer +naval commander +adjutant general +commander in chief +commissioned officer +army officer +adjutant +inspector general +sergeant +first sergeant +staff sergeant +commissioned military officer +commissioned naval officer +line officer +major +lieutenant +first lieutenant +marshal +captain +general +lieutenant colonel +lieutenant commander +rear admiral +soldier +enlisted man +tanker +reservist +Unknown Soldier +private +recruit +yard bird +villager +Tahitian +American +Asian +American +Polynesian +European +New Zealander +North Carolinian +Minnesotan +Nebraskan +Floridian +Afghan +Tibetan +Mongol +Papuan +Indian +Jordanian +Japanese +Malay +Korean +Timorese +Bornean +Lao +Iraqi +Gujarati +Punjabi +West Indian +Latin American +North American +South American +Bahamian +Barbadian +Haitian +Central American +Canadian +Mexican +Nicaraguan +Mexican-American +Bolivian +Guyanese +Albanian +Byelorussian +Monegasque +Frank +Scandinavian +Laconian +Netherlander +Slovene +Sabine +Bulgarian +Romanian +Lithuanian +Englishwoman +Britisher +Yugoslav +Dubliner +Parisian +Eritrean +Tanzanian +Zulu +Black African +Cameroonian +Sudanese +Senegalese +Kenyan +Togolese +Ugandan +Liberian +Herero +Zimbabwean +Nigerian +Gambian +Tuareg +Guinean +Ethiopian +South African +mayor +politician +trainer +employer +Speaker +lawgiver +cheerleader +head +aristocrat +spiritual leader +instigator +mistress +boss +demagogue +Labourite +animal trainer +pitching coach +legislator +deputy +senator +administrator +department head +secretary +manageress +executive +hotelier +chief executive officer +Treasury +minister +Secretary of State +Secretary of the Interior +duchess +viscount +clergyman +lama +rabbi +Dalai Lama +officiant +priest +cleric +vicar +Father +bishop +diocesan +cardinal +metropolitan +federalist +supporter +ambassador +protectionist +loyalist +cheerleader +adulteress +wrongdoer +hypocrite +abettor +skinhead +biographer +disk jockey +speaker +representative +reporter +orator +interlocutor +organ-grinder +head of state +alderman +resident commissioner +President of the United States +president +television reporter +anchor +retiree +sunbather +camper +scholar +exponent +casuist +futurist +licentiate +reader +brawler +boxer +wrestler +flyweight +middleweight +sparring partner +prizefighter +light heavyweight +featherweight +lightweight +heavyweight +flyweight +sumo wrestler +bantamweight +egotist +fire-eater +upstart +bragger +exhibitionist +sovereign +Pharaoh +Cheops +sheik +rider +motorcyclist +musher +astronaut +pedestrian +mover +commuter +pilgrim +skin-diver +settler +tourist +runner +gringo +unicyclist +hang glider +jockey +horseman +saunterer +marcher +hitter +scrambler +psycholinguist +social scientist +lumper +sociologist +political scientist +economist +econometrician +microeconomist +female child +woman +mother's daughter +girl wonder +Boy Scout +Cub Scout +enchantress +lady +old woman +nymph +donna +bridesmaid +smasher +primigravida +signorina +girl +beldam +heroine +widow +call girl +baggage +wife +gal +baby +lass +maid +first lady +old lady +crown princess +father-in-law +cousin +kinswoman +ancestor +kinsman +second cousin +in-law +kin +twin +offspring +sibling +niece +aunt +great-niece +sister +great-aunt +little sister +big sister +parent +forefather +forebear +patriarch +mater +father +mother +dad +old man +great grandparent +grandparent +great grandmother +nan +grandma +grandfather +great-nephew +little brother +grandchild +firstborn +child +successor +granddaughter +great grandchild +great grandson +great granddaughter +baby +godson +premature baby +neonate +shiitake +common stinkhorn +earthball +truffle +hen-of-the-woods +gyromitra +mildew +lichen +white fungus +true slime mold +slime mold +club fungus +earthstar +coral fungus +false morel +puffball +pythium +helvella +giant puffball +Scleroderma citrinum +jelly fungus +agaric +stinkhorn +discomycete +basidiomycete +Phytophthora infestans +Jew's-ear +bolete +powdery mildew +downy mildew +reindeer moss +beard lichen +Iceland moss +lecanora +Sarcoscypha coccinea +Aleuria aurantia +gill fungus +polypore +agaric +mushroom +Polyporus squamosus +bracket fungus +Entoloma lividum +mushroom +inky cap +mushroom +oyster mushroom +deer mushroom +parasol mushroom +fairy-ring mushroom +royal agaric +blewits +honey mushroom +Pholiota squarrosa +lepiota +blushing mushroom +horse mushroom +nameko +winter mushroom +false deathcap +shaggymane +destroying angel +toadstool +chanterelle +meadow mushroom +death cap +fly agaric +morel +common morel +black morel +Boletus edulis +Boletus luridus +Boletus chrysenteron +somatic cell +histiocyte +leukocyte +lymphocyte +neutrophil +nest +tangle +radiator +plant part +rock +comet +cadaver +star +snowdrift +covering +aerie +wasp's nest +lip +tendril +plant organ +mycelium +reproductive structure +leaf +root +stalk +hypanthium +flower +fruit +pistil +rosebud +inflorescence +floret +umbel +flower cluster +panicle +olive +ear +buckthorn berry +berry +wild cherry +acorn +rowanberry +mealie +gourd +seed +hip +juniper berry +pod +corn +coffee bean +nut +buckeye +oilseed +bean +edible seed +edible nut +pine nut +macadamia nut +pistachio +hazelnut +walnut +cashew +chestnut +pecan +peanut +coconut +linseed +rapeseed +broad bean +soy +cumin +sunflower seed +pumpkin seed +legume +okra +chickpea +pea +cowpea +garden pea +lentil +dandelion green +frond +petal +cassava +chicory +tuber +spadix +branchlet +bulb +petiole +scape +cornstalk +rattan +Jerusalem artichoke +yam +squill +onion +belay +outcrop +tor +supernova +sun +shell +bracteole +shell +cassia bark +snowcap +perianth +body covering +roof +seashell +scallop shell +oyster shell +exoskeleton +cuticle +plastron +skin +hair +scapular +hairdo +forelock +encolure +facial hair +pigtail +thatch +pompadour +mustache +beard +mustachio +soup-strainer +stubble +soul patch +weather +dust storm +cloud +snow +wave diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.tree" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.tree" new file mode 100644 index 00000000..deb61e2a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/9k.tree" @@ -0,0 +1,9418 @@ +n00002452 -1 +n00020827 -1 +n00002684 -1 +n11425580 -1 +n05220461 0 +n09225146 0 +n05538625 4 +n01900150 4 +n05225602 4 +n05418717 8 +n05302499 8 +n05578095 8 +n09475179 5 +n09376198 5 +n14877585 1 +n15046900 1 +n00019613 1 +n00021265 1 +n15067877 14 +n09436708 14 +n14915184 15 +n07555863 15 +n07850329 21 +n07849336 21 +n07705711 21 +n07622061 21 +n07594066 21 +n07854982 22 +n07852833 22 +n07852614 22 +n07854184 22 +n07852229 22 +n07851443 22 +n07705931 24 +n07707451 24 +n07752966 33 +n07760859 33 +n07747055 33 +n07754684 33 +n07768694 33 +n07764847 33 +n07768858 33 +n07739125 33 +n07746551 33 +n07753113 33 +n07763987 33 +n07748574 33 +n07751451 33 +n07762244 33 +n07750872 33 +n07742704 33 +n07765208 33 +n07763792 33 +n07767847 33 +n07766173 33 +n07751004 33 +n07760153 33 +n07758680 33 +n07753592 33 +n07751280 33 +n07769731 33 +n07763629 33 +n07755411 33 +n07754451 33 +n07753275 33 +n07764155 33 +n07765073 33 +n07762114 33 +n07762913 33 +n07753743 33 +n07765999 33 +n07765361 33 +n07752377 33 +n07757132 33 +n07769584 33 +n07751148 33 +n07761141 36 +n07761309 36 +n07749731 37 +n07747951 37 +n07749446 37 +n07747607 37 +n07749582 37 +n07750449 37 +n07749969 37 +n07750146 37 +n07748157 79 +n07748416 79 +n07748276 79 +n07748912 81 +n07748753 81 +n07749192 89 +n07749312 89 +n07739344 42 +n07739506 42 +n07742313 94 +n07740220 94 +n07740954 94 +n07740461 96 +n07740342 96 +n07745940 50 +n07767171 50 +n07744246 50 +n07744057 50 +n07744811 50 +n07744682 50 +n07745466 50 +n07743902 50 +n07746334 50 +n07746186 50 +n07743544 50 +n07743224 50 +n07755707 62 +n07756951 62 +n07755929 62 +n07757990 73 +n07757312 73 +n07757511 73 +n07734744 34 +n07719213 34 +n07768423 34 +n07735510 34 +n07718472 34 +n07710283 34 +n07713395 34 +n07708398 34 +n07710007 34 +n07718747 34 +n07708798 34 +n07723039 34 +n07715561 34 +n07709333 34 +n07730406 34 +n07730033 34 +n07733394 34 +n07713267 34 +n07722217 34 +n07817871 34 +n07736813 123 +n07719839 123 +n07712267 123 +n07730207 123 +n07710616 123 +n07710952 142 +n07711569 142 +n07711080 142 +n07713763 124 +n07713895 124 +n07733567 124 +n07715103 124 +n07715221 124 +n07715407 124 +n07714990 124 +n07735687 124 +n07735803 124 +n07714188 147 +n07714448 147 +n07714895 147 +n07714571 147 +n07714078 147 +n07720442 126 +n07734017 126 +n07713074 126 +n07734555 126 +n07720615 160 +n07721325 160 +n07720875 164 +n07721195 164 +n07721018 164 +n07721456 165 +n07722052 165 +n07721942 169 +n07721678 169 +n07734292 161 +n07734183 161 +n07724943 128 +n07725376 128 +n07726095 128 +n07725255 128 +n07729485 175 +n07726796 175 +n07727458 180 +n07727048 180 +n07727578 180 +n07727868 183 +n07728804 183 +n07728053 184 +n07728585 184 +n07728181 184 +n07729384 185 +n07729828 185 +n07725531 176 +n07725789 191 +n07725888 191 +n07715721 130 +n07717070 130 +n07716906 194 +n07716358 194 +n07716034 194 +n07717556 195 +n07717410 195 +n07720277 131 +n07736256 131 +n07723330 131 +n07719616 131 +n07736692 131 +n07733712 131 +n07732747 203 +n07730855 203 +n07731587 203 +n07731006 203 +n07723559 203 +n07724654 211 +n07724269 211 +n07724492 211 +n07722485 136 +n07723177 136 +n07722888 136 +n07639069 25 +n07679356 25 +n07682197 219 +n07680517 219 +n07695878 219 +n07685730 219 +n07682316 219 +n07684517 219 +n07680761 219 +n07681691 219 +n07684600 219 +n07684164 219 +n07686720 219 +n07680932 219 +n07687211 219 +n07681450 219 +n07683786 219 +n07695742 219 +n07682477 219 +n07686873 219 +n07684289 219 +n07683490 219 +n07682808 219 +n07690585 228 +n07684938 228 +n07690892 228 +n07685399 228 +n07693972 228 +n07690273 228 +n07691091 228 +n07687789 228 +n07685218 228 +n07694516 245 +n07694839 245 +n07694659 245 +n07690511 246 +n07690739 246 +n07690431 246 +n07688624 248 +n07688898 248 +n07689003 248 +n07690152 231 +n07693725 231 +n07690019 231 +n07692614 231 +n07691758 231 +n07691539 231 +n07691650 231 +n07693223 262 +n07693048 262 +n07691237 262 +n07687626 232 +n07687381 232 +n07687469 232 +n07871810 234 +n07684084 234 +n14580897 16 +n15062057 16 +n14698884 274 +n14696793 274 +n14765422 274 +n14844693 274 +n15019030 274 +n12167075 274 +n14974264 274 +n14858292 274 +n15075141 282 +n04033425 282 +n07556637 17 +n07566340 17 +n07560652 17 +n07881800 17 +n07938313 17 +n07800091 17 +n07570720 17 +n01464844 17 +n07556406 17 +n07840804 287 +n07802417 287 +n07925608 287 +n07844867 287 +n07569644 287 +n07568502 287 +n07809096 287 +n07843775 287 +n07755089 287 +n07882497 287 +n07573347 287 +n07923748 287 +n07572957 287 +n07731952 296 +n07804323 296 +n07804771 296 +n07803093 296 +n07803545 296 +n07732168 308 +n07732636 308 +n07804657 309 +n07804900 309 +n07809368 301 +n07841345 301 +n07827284 317 +n07827130 317 +n07822518 317 +n07827410 317 +n07816052 317 +n07812184 317 +n07810907 317 +n07858595 317 +n07811416 317 +n07824702 317 +n07818277 317 +n07819769 317 +n07920989 317 +n07822323 317 +n07815424 324 +n07814390 324 +n07826930 324 +n07814487 324 +n07814203 324 +n07583066 325 +n07822845 325 +n07767344 325 +n07823105 325 +n07828987 325 +n07582609 325 +n07825972 325 +n07823460 325 +n07823698 325 +n07822197 325 +n07856270 325 +n07767709 325 +n07829412 325 +n07829331 342 +n07829248 342 +n07857731 348 +n07857170 348 +n07838233 350 +n07836838 350 +n07826091 350 +n07830593 350 +n07840027 350 +n07832416 350 +n07832902 350 +n07835921 350 +n07835457 350 +n07831146 355 +n07831267 355 +n07834618 361 +n07834507 361 +n07595914 326 +n07858978 326 +n07859583 326 +n07860103 370 +n07860331 370 +n07860447 370 +n07816164 327 +n07818689 327 +n07821260 327 +n07820683 327 +n07816575 327 +n07817160 327 +n07817315 327 +n07819166 327 +n07817024 327 +n07818995 327 +n07816398 327 +n07820497 327 +n07932841 327 +n07820145 327 +n07819896 327 +n07816296 327 +n07821758 327 +n07933154 386 +n07935379 386 +n07935043 386 +n07847198 302 +n07844042 302 +n07848196 394 +n07847453 394 +n07847917 394 +n07847827 394 +n07678729 304 +n07860805 304 +n07860988 304 +n07883031 304 +n07623136 402 +n07861158 402 +n07627931 404 +n07628068 404 +n07565161 288 +n07565083 288 +n07561590 288 +n07561112 288 +n07560903 288 +n07562495 411 +n07564971 411 +n07938149 413 +n07938007 413 +n07884567 289 +n07924033 289 +n07919310 289 +n07891189 289 +n07922764 289 +n07929519 289 +n07921455 289 +n07933274 289 +n07927197 289 +n07925966 289 +n07891309 289 +n07936263 289 +n07883251 289 +n07914271 289 +n07911371 417 +n07901587 417 +n07891433 417 +n07891726 417 +n07886176 417 +n07886057 417 +n07907943 417 +n07921615 417 +n07886572 417 +n07902121 417 +n07886463 417 +n07912211 431 +n07911677 431 +n07914777 431 +n07930554 431 +n07930433 431 +n07930315 431 +n07915491 442 +n07915094 442 +n07913393 443 +n07916041 443 +n07914995 443 +n07916183 443 +n07914413 443 +n07917392 443 +n07917133 443 +n07915918 443 +n07930864 445 +n07931870 445 +n07932039 445 +n07930062 445 +n07906111 432 +n07907037 432 +n07902799 432 +n07904865 432 +n07905474 432 +n07902937 432 +n07904395 432 +n07905038 432 +n07902336 432 +n07905979 432 +n07903101 432 +n07904760 432 +n07903208 432 +n07904934 432 +n07906284 432 +n07902443 474 +n07903841 474 +n07903962 474 +n07903731 474 +n07903643 474 +n07907161 476 +n07906718 476 +n07907831 476 +n07907548 476 +n07907429 476 +n07906877 476 +n07906572 476 +n07893253 434 +n07892418 434 +n07893642 434 +n07899003 434 +n07896287 434 +n07896661 434 +n07893528 434 +n07896165 434 +n07900225 434 +n07893891 434 +n07900406 434 +n07895237 434 +n07898745 434 +n07896060 434 +n07899108 434 +n07892512 434 +n07897750 434 +n07892813 434 +n07894703 498 +n07894102 498 +n07894551 498 +n07900616 499 +n07900958 499 +n07900734 499 +n07900825 499 +n07901457 499 +n07898117 500 +n07895435 500 +n07899434 503 +n07899292 503 +n07894298 504 +n07895595 504 +n07894965 504 +n07897865 504 +n07895839 504 +n07895710 504 +n07898333 504 +n07897438 506 +n07895962 506 +n07896893 506 +n07899899 506 +n07895100 506 +n07898443 506 +n07899533 506 +n07894799 506 +n07897975 506 +n07899660 506 +n07894451 506 +n07910656 437 +n07909593 437 +n07911249 437 +n07910048 437 +n07908411 437 +n07910379 437 +n07908647 437 +n07886849 439 +n07887634 544 +n07887099 544 +n07889510 544 +n07887192 544 +n07887304 545 +n07888229 545 +n07887967 545 +n07889274 545 +n07887461 545 +n07888465 547 +n07890226 547 +n07890352 547 +n07889814 547 +n07890068 547 +n07890540 547 +n07888816 547 +n07924834 418 +n07924443 418 +n07924276 418 +n07920540 422 +n07920222 422 +n07920052 422 +n07920349 422 +n07919441 422 +n07731284 422 +n07919572 422 +n07920872 422 +n07921239 422 +n07934282 424 +n07933799 424 +n07929172 425 +n07927931 425 +n07928488 425 +n07928367 425 +n07927512 425 +n07928887 425 +n07928696 576 +n07928790 576 +n07936745 428 +n07935737 428 +n07936548 428 +n07801508 291 +n07805594 291 +n07800740 291 +n07801091 588 +n07802026 588 +n07801779 588 +n07801892 588 +n07557165 292 +n07560193 292 +n07651025 292 +n07560331 292 +n07557434 292 +n07556970 292 +n05399243 292 +n15089258 292 +n07560542 292 +n07573696 292 +n07613815 593 +n07643981 593 +n07596684 593 +n07600696 605 +n07597145 605 +n07597365 605 +n07599998 605 +n07596967 605 +n07620689 605 +n07642471 607 +n07643200 612 +n07642742 612 +n07643026 612 +n07642933 612 +n07643306 612 +n07606538 608 +n07599911 608 +n07607138 608 +n07608429 608 +n07598256 608 +n07606669 608 +n07607605 608 +n07601572 608 +n07609632 608 +n07605597 608 +n07607967 608 +n07609215 608 +n07841907 608 +n07606764 608 +n07605944 608 +n07601686 608 +n07605380 608 +n07605040 608 +n07601809 608 +n07605474 608 +n07842130 630 +n07842044 630 +n07600285 609 +n07600177 609 +n07842202 597 +n07579688 597 +n07580053 597 +n07588947 597 +n07842753 597 +n07583197 597 +n07879350 597 +n07880751 597 +n07868200 597 +n07863802 597 +n07875152 597 +n07824191 597 +n07878785 597 +n07865484 597 +n07866015 597 +n07868955 597 +n07861557 597 +n07580253 597 +n07877187 597 +n07866868 597 +n07880458 597 +n07648913 597 +n07580470 597 +n07866277 597 +n07591961 597 +n07868508 597 +n07871436 597 +n07864934 597 +n07874780 597 +n07879659 597 +n07878926 597 +n07937461 597 +n07842433 597 +n07862611 597 +n07863374 597 +n07866723 597 +n07867021 597 +n07867164 597 +n07726525 597 +n07624466 597 +n07842308 597 +n07877299 597 +n07880080 597 +n07862348 597 +n07873464 597 +n07869775 597 +n07879953 597 +n07625061 597 +n07843636 597 +n07696403 597 +n07580592 597 +n07655263 597 +n07868340 597 +n07619004 597 +n07879174 597 +n07867324 597 +n07843464 597 +n07877961 597 +n07873807 597 +n07867421 597 +n07654298 597 +n07878647 597 +n07611839 597 +n07842605 597 +n07871720 597 +n07869611 597 +n07876651 597 +n07880968 597 +n07875436 597 +n07806221 597 +n07841495 597 +n07823951 597 +n07712382 597 +n07591586 645 +n07590320 645 +n07587111 645 +n07592481 645 +n07590611 645 +n07591473 645 +n07590502 645 +n07591049 645 +n07592768 645 +n07585758 647 +n07588193 647 +n07586894 647 +n07588299 647 +n07584110 647 +n07587441 647 +n07587023 647 +n07586099 647 +n07588574 647 +n07584332 647 +n07586604 647 +n07586718 647 +n07585107 647 +n07585557 647 +n07585208 647 +n07584593 647 +n07585906 647 +n07584423 647 +n07587618 729 +n07587700 729 +n07588111 729 +n07704054 670 +n07704205 670 +n07871234 676 +n07870167 676 +n07863547 676 +n07700003 676 +n07619208 695 +n07619409 695 +n07874159 700 +n07874343 700 +n07874259 700 +n07874441 700 +n07874063 700 +n07867751 701 +n07867616 701 +n07808587 711 +n07807834 711 +n07806633 711 +n07807171 711 +n07807710 711 +n07807922 711 +n07808904 711 +n07806774 762 +n07807472 762 +n07841639 712 +n07841800 712 +n07695965 714 +n07712748 714 +n07712559 714 +n07697825 771 +n07697313 771 +n07696728 771 +n07696625 771 +n07698543 771 +n07698401 771 +n07865105 771 +n07696977 771 +n07698250 771 +n07698782 771 +n07697100 771 +n07696839 771 +n07697537 771 +n07712856 772 +n07712959 772 +n07579575 598 +n07579787 598 +n07609840 598 +n07581346 598 +n07611991 791 +n07613266 791 +n07611358 791 +n07612632 791 +n07612996 791 +n07613480 791 +n07611267 791 +n07612367 791 +n07611148 791 +n07611046 791 +n07617611 791 +n07612137 791 +n07616386 795 +n07631926 795 +n07615774 795 +n07616487 795 +n07614730 795 +n07614500 795 +n07614198 795 +n07616748 795 +n07616046 795 +n07617051 795 +n07615671 810 +n07615190 810 +n07614825 810 +n07615460 810 +n07617708 796 +n07618432 796 +n07582152 792 +n07734879 792 +n07581775 792 +n07582277 792 +n07730320 792 +n07581249 792 +n15089645 600 +n15089472 600 +n15093137 827 +n15093298 827 +n15090742 827 +n15091473 831 +n14919819 831 +n15091669 831 +n14810561 831 +n14973585 831 +n15091304 831 +n15091846 831 +n15092227 828 +n15090065 828 +n07576438 602 +n07577374 602 +n07575984 602 +n07574602 602 +n07574426 602 +n07593199 602 +n07576182 602 +n07574923 602 +n07574780 602 +n07575726 602 +n07575076 602 +n07578093 602 +n07576577 841 +n07577144 853 +n07576781 853 +n07574504 842 +n07577538 842 +n09335240 2 +n00027167 2 +n09334396 2 +n09283193 2 +n03892891 2 +n09287968 2 +n03059685 2 +n00003553 2 +n09300905 2 +n09452395 858 +n09260907 858 +n08630039 859 +n08630985 859 +n09386842 859 +n08593262 859 +n08620061 859 +n09379111 859 +n08649711 869 +n08658309 869 +n08568978 869 +n08512259 877 +n03823111 877 +n04170933 878 +n09433839 878 +n08578517 870 +n08640739 870 +n08574314 870 +n08552138 870 +n08645104 884 +n08505018 884 +n08659861 884 +n08659446 884 +n08673395 884 +n08583455 890 +n08598301 890 +n08651247 890 +n03120491 890 +n02802544 890 +n08614632 890 +n08674739 890 +n08569998 890 +n08494231 890 +n08677424 892 +n08616050 892 +n08518171 893 +n08573842 893 +n08521623 893 +n03368352 897 +n03417345 897 +n04454908 906 +n03902482 906 +n04610879 898 +n08579352 898 +n03963645 909 +n03417749 909 +n08524735 885 +n08537837 885 +n08551296 885 +n08628141 914 +n08633683 914 +n08539072 914 +n09249034 871 +n09263912 871 +n08583292 872 +n09443281 872 +n08547544 872 +n08664443 873 +n04602044 873 +n08580944 873 +n03581125 924 +n08517676 924 +n08598568 924 +n08584914 924 +n03899933 925 +n02776631 925 +n03322099 925 +n03935234 933 +n04052442 933 +n03159535 933 +n15102894 874 +n09242389 874 +n09382099 860 +n09282208 860 +n09392402 860 +n09393605 860 +n09445289 860 +n03030880 862 +n03946162 862 +n03485997 862 +n03882960 946 +n04322026 946 +n03474896 946 +n02764398 946 +n02907082 946 +n03948830 946 +n09205509 863 +n09472413 863 +n09443453 863 +n09309292 863 +n09366017 863 +n09366317 863 +n09376786 863 +n09348460 863 +n09246464 863 +n09433442 863 +n09454153 863 +n09409752 863 +n09403734 863 +n09331251 863 +n09437454 863 +n09238926 863 +n09283866 863 +n09217230 863 +n09305898 955 +n09288635 955 +n09308743 956 +n09308572 956 +n09194227 956 +n09289331 956 +n09468604 957 +n09344324 957 +n09335809 957 +n09435739 957 +n09215437 957 +n09259219 957 +n09217638 957 +n09304750 957 +n09206896 977 +n09405787 977 +n09233446 986 +n09290444 986 +n09457979 981 +n09245515 981 +n09376526 983 +n09415671 983 +n09448690 983 +n09230041 984 +n09398076 984 +n09453008 958 +n09303008 958 +n09359803 958 +n09302616 958 +n09409512 958 +n09399592 958 +n09199101 997 +n09230202 997 +n09283405 997 +n09326662 997 +n09193705 998 +n09218641 998 +n09472597 998 +n09421951 1000 +n09270735 1000 +n09406793 1000 +n09213434 1000 +n09256479 1011 +n09210862 1011 +n09421799 1012 +n09224725 1012 +n09396465 1001 +n09362945 1001 +n09259025 961 +n09398677 961 +n09428293 962 +n09447666 962 +n09332890 962 +n08596076 1021 +n09428628 1021 +n09361517 967 +n09265620 967 +n09303528 967 +n09436444 967 +n09274152 967 +n09213565 967 +n09269472 967 +n09206985 967 +n09228055 967 +n09466678 967 +n09415584 1031 +n09475925 1031 +n09257843 968 +n09239302 968 +n09294877 968 +n00021939 865 +n00004258 865 +n00019128 865 +n02749953 865 +n02852523 1041 +n03767112 1041 +n14977504 1041 +n03129123 1041 +n03848729 1041 +n03964744 1041 +n04362025 1041 +n04469003 1041 +n04341686 1041 +n03575240 1041 +n03873064 1041 +n03122748 1041 +n03309808 1041 +n02871147 1041 +n03364340 1041 +n14786479 1041 +n03169390 1041 +n04564698 1041 +n04339291 1041 +n00022903 1041 +n03315023 1041 +n03302121 1041 +n03076708 1041 +n04188643 1041 +n03354613 1041 +n14976871 1041 +n03670849 1041 +n02917521 1045 +n04414909 1045 +n04435180 1045 +n02725872 1045 +n04076846 1048 +n02743547 1048 +n03816849 1048 +n04007894 1048 +n03934656 1076 +n03720163 1076 +n04227144 1076 +n04260364 1076 +n03925226 1076 +n04564581 1076 +n02744844 1084 +n04042358 1084 +n03927091 1084 +n03927539 1084 +n03876519 1077 +n04485423 1077 +n03835197 1090 +n03342127 1090 +n04246271 1078 +n04321238 1078 +n04180314 1095 +n03625783 1095 +n03684611 1096 +n03514693 1096 +n03421485 1097 +n04026180 1097 +n02870526 1079 +n04599396 1079 +n06415688 1079 +n03822171 1079 +n04582205 1103 +n03727605 1103 +n03849679 1103 +n04598792 1103 +n03631922 1103 +n02933649 1109 +n03600722 1109 +n03169176 1049 +n03418618 1049 +n02727016 1049 +n03526198 1049 +n03794798 1049 +n03859608 1049 +n03968581 1116 +n03717447 1116 +n03614782 1116 +n03915900 1116 +n04431025 1116 +n03974070 1050 +n02779435 1050 +n03941231 1050 +n04399382 1050 +n03603442 1050 +n09229709 1050 +n03548402 1050 +n03944138 1050 +n04238128 1050 +n04284869 1050 +n03061211 1050 +n03219135 1050 +n09282724 1129 +n09191635 1129 +n09443641 1136 +n04186268 1136 +n03447358 1135 +n03607029 1135 +n03536348 1051 +n02857023 1051 +n04381860 1051 +n04213626 1051 +n03961939 1142 +n04394630 1142 +n03365592 1142 +n04501550 1146 +n04296562 1146 +n03159640 1146 +n04354182 1146 +n03549732 1146 +n03360300 1148 +n03892178 1148 +n02768973 1143 +n03906224 1143 +n03313333 1145 +n02990373 1145 +n02861886 1053 +n03365991 1053 +n02898711 1053 +n03109693 1053 +n13898207 1053 +n04358874 1053 +n02687821 1053 +n03135532 1053 +n03545756 1053 +n03548626 1053 +n03469175 1053 +n03688943 1053 +n02914991 1053 +n04191595 1053 +n09218315 1053 +n03074380 1053 +n02699494 1053 +n02733524 1053 +n04460130 1053 +n04471148 1053 +n03792048 1053 +n03388043 1053 +n03837869 1053 +n03321954 1053 +n02733213 1053 +n03687137 1053 +n03065424 1053 +n02839110 1053 +n03894379 1053 +n03725717 1053 +n04226464 1053 +n03071160 1053 +n03839993 1053 +n02913152 1053 +n04128413 1053 +n04008947 1053 +n03917198 1053 +n03222318 1053 +n04295881 1053 +n03241335 1053 +n02735688 1053 +n02777734 1053 +n03984381 1053 +n03216828 1053 +n03517899 1053 +n03546340 1053 +n04361095 1053 +n13897996 1053 +n03171356 1053 +n03290195 1053 +n03743902 1053 +n03297735 1053 +n04217882 1053 +n02863426 1160 +n03408054 1160 +n03463381 1161 +n03758089 1161 +n03686130 1161 +n02800497 1161 +n03379828 1162 +n03233744 1162 +n02953197 1162 +n04108822 1162 +n03865557 1162 +n04492749 1162 +n04532670 1162 +n04311004 1162 +n03122073 1162 +n03415486 1162 +n04366367 1162 +n04479939 1162 +n03956922 1172 +n03069752 1172 +n04592465 1231 +n03316406 1231 +n03212811 1231 +n03844673 1231 +n04068441 1231 +n04103094 1234 +n03387653 1234 +n04311595 1234 +n03697007 1234 +n04300358 1234 +n04032603 1242 +n02810782 1242 +n03492250 1173 +n03826186 1173 +n03547054 1173 +n04411264 1173 +n03550153 1173 +n03560430 1173 +n03254189 1173 +n03792972 1248 +n04025508 1248 +n03900979 1248 +n02769963 1248 +n03374473 1248 +n02954163 1248 +n03334291 1257 +n04549028 1257 +n03035252 1257 +n03448956 1177 +n04113765 1177 +n03975035 1177 +n04486054 1177 +n02905152 1177 +n03784896 1262 +n04104384 1262 +n02946127 1178 +n04501947 1178 +n03047052 1178 +n04206790 1178 +n03029197 1178 +n03767745 1178 +n04028581 1178 +n04220250 1178 +n04556948 1178 +n04479823 1178 +n04028764 1178 +n04312432 1178 +n03347617 1178 +n03519387 1178 +n04361260 1178 +n03098959 1178 +n02826886 1178 +n02814860 1178 +n02922292 1180 +n04251701 1180 +n04051825 1180 +n03390786 1288 +n02811936 1288 +n02699770 1188 +n04546855 1188 +n03409393 1292 +n04544325 1292 +n02755823 1292 +n03904657 1293 +n02825961 1293 +n02898369 1189 +n04326799 1189 +n02796623 1192 +n03839795 1192 +n03967942 1192 +n03659686 1192 +n03454707 1300 +n04127395 1300 +n03795580 1300 +n02788148 1300 +n02894605 1300 +n03459775 1300 +n04571566 1300 +n04047401 1300 +n03549589 1300 +n04304680 1300 +n03327234 1300 +n03160309 1300 +n03427296 1306 +n03221720 1306 +n03698815 1316 +n03985881 1316 +n04501370 1316 +n03395514 1317 +n02963821 1317 +n04153025 1317 +n03394649 1317 +n03226880 1317 +n03579538 1317 +n04239074 1317 +n04086446 1317 +n02793842 1317 +n03498662 1317 +n04329834 1317 +n04547592 1314 +n04082710 1314 +n04046974 1314 +n03000134 1314 +n03252637 1314 +n03511175 1314 +n04604644 1314 +n03930313 1314 +n04326547 1314 +n04560882 1301 +n02920369 1301 +n03262072 1302 +n03108853 1302 +n04390977 1302 +n03999160 1193 +n03542333 1193 +n04409384 1193 +n02666943 1193 +n02726681 1193 +n02763604 1193 +n03478756 1193 +n03545150 1193 +n04104500 1193 +n04081699 1193 +n03859280 1193 +n03402941 1193 +n03739518 1193 +n03542605 1193 +n03661043 1193 +n02977936 1193 +n03322570 1193 +n03953416 1193 +n04081281 1193 +n03770316 1193 +n04112654 1193 +n03839671 1193 +n03842012 1193 +n04407686 1193 +n04217546 1193 +n03449564 1193 +n03457902 1193 +n04093625 1193 +n03956157 1193 +n04018399 1193 +n02882190 1193 +n03544360 1193 +n04118635 1193 +n02734725 1193 +n04233124 1193 +n03430418 1193 +n04146050 1193 +n03007444 1193 +n04417809 1193 +n03479397 1193 +n03092166 1193 +n02993546 1193 +n04080705 1347 +n08640531 1347 +n03788498 1347 +n08560295 1347 +n04095109 1347 +n04229737 1347 +n03541696 1347 +n03790755 1347 +n03036022 1352 +n03466839 1352 +n03698723 1352 +n03333610 1353 +n03837698 1353 +n03121298 1353 +n04187547 1356 +n03416489 1356 +n02968074 1356 +n03860404 1356 +n03055857 1356 +n02859443 1402 +n04598318 1402 +n02727426 1402 +n03730334 1358 +n03210552 1358 +n04294879 1362 +n03016389 1362 +n03123809 1362 +n02793495 1362 +n03884778 1363 +n03028079 1363 +n04407435 1363 +n04210390 1363 +n04346328 1363 +n03724756 1363 +n04374735 1363 +n03788195 1363 +n03007130 1363 +n03618982 1417 +n02667576 1417 +n02984061 1417 +n02984203 1417 +n03772077 1417 +n02935658 1364 +n04111414 1364 +n02760099 1364 +n02892499 1364 +n02935891 1364 +n03199647 1364 +n02956699 1371 +n03282295 1371 +n04461437 1371 +n03005033 1371 +n03152303 1371 +n04305210 1371 +n03121431 1371 +n03558176 1373 +n03557360 1373 +n02696165 1375 +n03393017 1375 +n04258438 1377 +n02919792 1377 +n04115256 1377 +n02932400 1377 +n03257210 1377 +n03719053 1377 +n03685820 1377 +n03428090 1377 +n03686924 1377 +n04131368 1377 +n03118969 1377 +n03219483 1377 +n04052658 1377 +n02857477 1377 +n03180865 1377 +n04535524 1377 +n03002816 1377 +n04079244 1377 +n03322836 1377 +n04413969 1449 +n02907873 1449 +n03878066 1452 +n04305323 1452 +n03718458 1452 +n04354026 1457 +n03158186 1457 +n04535370 1457 +n03010915 1457 +n03718935 1464 +n04073948 1464 +n03439348 1464 +n03892557 1464 +n03877845 1464 +n03781244 1476 +n02667379 1476 +n02667478 1476 +n03165616 1382 +n03092314 1382 +n03801671 1382 +n03849814 1384 +n03801533 1384 +n03032252 1384 +n03678729 1384 +n03529860 1384 +n03097362 1387 +n04177931 1387 +n02940385 1387 +n03111041 1195 +n03064935 1195 +n03626115 1195 +n02838728 1195 +n03356858 1195 +n02902079 1195 +n04439585 1195 +n03263076 1195 +n04453037 1195 +n03942920 1195 +n03379204 1198 +n03522003 1198 +n03220692 1198 +n02782778 1198 +n02918112 1198 +n02704949 1198 +n03899768 1200 +n03109881 1200 +n02775178 1200 +n03517647 1200 +n03024064 1200 +n02894158 1200 +n04030518 1200 +n03004824 1200 +n02758134 1200 +n03120198 1200 +n03200231 1200 +n04105893 1200 +n02750070 1200 +n03285912 1200 +n03813078 1200 +n02694045 1200 +n04328946 1200 +n03443005 1200 +n03378005 1519 +n02754656 1519 +n03047941 1519 +n03382292 1519 +n04446276 1521 +n04356925 1521 +n03288500 1521 +n04363991 1521 +n04112579 1521 +n03038685 1521 +n03412058 1521 +n03718581 1521 +n02991302 1521 +n03691817 1521 +n04139395 1521 +n03238131 1521 +n02839592 1521 +n02824319 1521 +n03619890 1521 +n03660909 1521 +n04329477 1521 +n04602762 1521 +n04180229 1521 +n02710324 1521 +n03200701 1521 +n04065464 1521 +n03541091 1521 +n04058096 1521 +n02873839 1521 +n03089879 1521 +n02821627 1521 +n03040376 1521 +n03679712 1521 +n03222176 1521 +n03478907 1521 +n04061793 1521 +n02857644 1521 +n04345028 1521 +n03683708 1521 +n03062122 1521 +n04406239 1521 +n03079741 1521 +n03120778 1521 +n03982331 1521 +n02807731 1521 +n03098688 1521 +n02715513 1521 +n04558478 1532 +n03746486 1532 +n04555291 1532 +n04018667 1532 +n03529175 1537 +n03653740 1537 +n04345201 1537 +n03885535 1548 +n04324387 1548 +n04523831 1548 +n04067818 1552 +n03200539 1552 +n02952585 1553 +n03319745 1553 +n04119478 1553 +n03283221 1554 +n04064862 1554 +n03850245 1554 +n04401680 1556 +n04541987 1556 +n03090172 1556 +n04209613 1556 +n03727465 1558 +n03788601 1558 +n03465718 1558 +n03542860 1558 +n03225108 1558 +n03836062 1558 +n03165466 1558 +n03457008 1562 +n03086580 1562 +n03878211 1562 +n03303831 1562 +n03891538 1563 +n03235042 1563 +n04000592 1569 +n03075946 1569 +n02932019 1569 +n03939677 1569 +n02931148 1569 +n03696065 1569 +n02933462 1569 +n03061505 1569 +n04305572 1569 +n02960352 1569 +n02934451 1569 +n04299370 1569 +n03235180 1569 +n04414199 1523 +n02936714 1523 +n03964495 1523 +n03907227 1523 +n04539203 1523 +n03993703 1523 +n03683079 1523 +n03016737 1523 +n03003730 1523 +n04061969 1523 +n02843276 1624 +n04037220 1624 +n03550289 1624 +n03124590 1626 +n04100519 1626 +n03376159 1626 +n04262161 1631 +n02921884 1631 +n03348868 1631 +n04080454 1631 +n03404449 1631 +n02868638 1631 +n03555006 1631 +n04076713 1640 +n03732114 1640 +n03617095 1643 +n02849885 1643 +n03837606 1643 +n03425325 1643 +n03566193 1643 +n03762434 1632 +n03073694 1632 +n03343560 1632 +n03346455 1632 +n02731398 1632 +n02991847 1526 +n03148324 1526 +n04295571 1526 +n03411544 1201 +n02705201 1661 +n03854722 1661 +n04327204 1202 +n04355267 1202 +n03399677 1202 +n04527648 1202 +n03168107 1202 +n02770211 1202 +n03986704 1202 +n03721590 1203 +n03251533 1203 +n02853016 1205 +n03259505 1205 +n04409625 1205 +n03679384 1205 +n03776460 1205 +n03088389 1205 +n02726305 1205 +n04549919 1673 +n02992032 1673 +n03088580 1674 +n04613696 1674 +n03685307 1674 +n04517408 1674 +n03507241 1674 +n03354207 1674 +n03042490 1674 +n03529629 1674 +n04172107 1674 +n04584373 1684 +n04412416 1684 +n02672371 1676 +n03349892 1693 +n02932693 1693 +n02822064 1679 +n03361297 1679 +n03010473 1206 +n04360501 1206 +n03391770 1206 +n03903868 1699 +n02929289 1699 +n03373943 1699 +n02669295 1699 +n04087826 1700 +n02926591 1700 +n04589593 1700 +n03390983 1700 +n03416094 1700 +n03530642 1700 +n04492375 1700 +n03646916 1700 +n03111296 1700 +n03931765 1700 +n04587648 1700 +n03042697 1700 +n04478512 1700 +n02689144 1700 +n03454536 1700 +n03453443 1700 +n04545305 1700 +n02977619 1700 +n04387261 1700 +n02732827 1700 +n04038727 1700 +n03793186 1700 +n04136510 1700 +n02976350 1700 +n03855333 1715 +n02813399 1715 +n04297750 1715 +n04232800 1715 +n03211789 1715 +n04110178 1715 +n03986562 1715 +n04473108 1715 +n03041810 1715 +n03224603 1715 +n03224753 1715 +n03637898 1715 +n03320959 1715 +n03961711 1725 +n02790669 1725 +n02835829 1725 +n03696301 1725 +n03207630 1725 +n04459773 1725 +n03896526 1726 +n03900393 1726 +n03792526 1726 +n04340935 1208 +n03386011 1208 +n03385557 1208 +n02806088 1751 +n03610098 1751 +n03628511 1754 +n02676938 1754 +n02695627 1752 +n03723781 1752 +n03334382 1753 +n02805983 1753 +n03296328 1753 +n03878963 1753 +n02980441 1753 +n02993194 1210 +n03743016 1210 +n04178329 1210 +n02892201 1210 +n03810952 1210 +n03884926 1210 +n03220237 1766 +n03745571 1766 +n03953020 1211 +n03574555 1211 +n04511002 1211 +n03748162 1773 +n03841666 1773 +n02931417 1773 +n03506370 1773 +n03965456 1776 +n03119203 1776 +n03176763 1776 +n04202417 1776 +n03722288 1776 +n02879309 1783 +n04131208 1783 +n04200800 1783 +n02871525 1783 +n03871371 1783 +n04428634 1783 +n03606251 1783 +n04462240 1783 +n03039827 1783 +n02813544 1783 +n03436417 1783 +n03367410 1783 +n03249342 1783 +n03416640 1783 +n03173387 1783 +n04245508 1783 +n02791270 1783 +n04299215 1783 +n04443257 1783 +n03822656 1783 +n02927161 1783 +n03952576 1783 +n03089624 1783 +n03099274 1783 +n02813645 1784 +n08492461 1784 +n03461385 1784 +n03847823 1784 +n04358707 1811 +n03555426 1811 +n03457686 1811 +n04261281 1812 +n03322704 1812 +n08571898 1812 +n03822504 1777 +n02885882 1777 +n03504723 1777 +n03111690 1774 +n03856012 1774 +n03592245 1822 +n03911513 1822 +n04005630 1822 +n04447443 1054 +n04566257 1054 +n03294048 1054 +n03091374 1054 +n03563967 1054 +n03405265 1054 +n03183080 1054 +n02997391 1054 +n04377057 1054 +n03094503 1054 +n03100490 1054 +n06254669 1054 +n03176594 1827 +n02807523 1827 +n03128519 1827 +n03690938 1827 +n04186051 1827 +n03476991 1827 +n03794136 1827 +n03916031 1827 +n03475823 1827 +n02723165 1827 +n03994008 1827 +n03113152 1827 +n02808185 1827 +n03484487 1841 +n03067339 1841 +n04357314 1841 +n03640850 1841 +n02862916 1842 +n04450640 1842 +n03487444 1842 +n02683791 1842 +n03992325 1846 +n03898271 1846 +n03916470 1846 +n03071021 1846 +n04448070 1846 +n03980026 1847 +n02901793 1847 +n04447276 1849 +n04386792 1849 +n03177165 1850 +n03519081 1850 +n03714235 1850 +n03314780 1871 +n03676087 1871 +n03309687 1871 +n03724066 1871 +n03676483 1871 +n04112752 1871 +n03309110 1871 +n03308481 1871 +n02738031 1828 +n03171228 1828 +n02866578 1828 +n02703275 1828 +n03812924 1828 +n02813752 1880 +n02746365 1880 +n03647520 1880 +n02950256 1886 +n03332393 1886 +n03786715 1888 +n02801450 1888 +n03553248 1882 +n02753044 1882 +n04113641 1883 +n04206570 1883 +n04063373 1829 +n04285146 1829 +n03926148 1829 +n03811847 1829 +n03889726 1829 +n03430959 1829 +n04137444 1829 +n03414162 1829 +n03888257 1829 +n03278248 1829 +n02727825 1829 +n02761206 1829 +n03729951 1829 +n02774921 1829 +n04393095 1896 +n02979290 1896 +n03192543 1910 +n04533802 1910 +n02799897 1897 +n03135030 1897 +n03039259 1897 +n04225729 1897 +n04607035 1897 +n03132261 1897 +n02802721 1897 +n03594148 1897 +n04212282 1897 +n03446832 1897 +n04275661 1897 +n04318131 1897 +n02885338 1897 +n02885462 1897 +n03472232 1897 +n04571292 1897 +n02800213 1914 +n02811059 1914 +n02811204 1914 +n02797881 1914 +n02811350 1914 +n02799175 1914 +n03528901 1933 +n03349771 1933 +n04425804 1933 +n04164406 1933 +n04102037 1917 +n04102162 1917 +n04102618 1917 +n03558404 1917 +n03523987 1943 +n04273972 1943 +n03336282 1943 +n03132076 1919 +n04582869 1919 +n03445924 1923 +n03447075 1923 +n04399537 1923 +n03446070 1923 +n04597066 1952 +n03585073 1952 +n03244047 1953 +n04284341 1953 +n04569822 1954 +n03762332 1954 +n04028074 1954 +n03823216 1954 +n03950537 1957 +n04135024 1957 +n03524150 1925 +n03978686 1925 +n03535780 1928 +n03538037 1928 +n04509260 1928 +n03888605 1928 +n04469514 1928 +n02777292 1928 +n04524142 1966 +n03980478 1966 +n03255030 1929 +n02790996 1929 +n03289660 1898 +n02942699 1898 +n03037404 1898 +n03338821 1898 +n03667664 1898 +n02884994 1976 +n03358726 1976 +n03976467 1976 +n03974915 1976 +n04569063 1976 +n03789171 1976 +n03196062 1976 +n03987266 1976 +n04069434 1976 +n04609531 1978 +n04067658 1978 +n03817191 1978 +n04071263 1901 +n03619396 1901 +n04091097 1901 +n03351434 1901 +n04295081 1901 +n04091693 1901 +n03138669 1992 +n03139464 1992 +n04179824 1993 +n03349469 1993 +n02966687 1993 +n03650551 1993 +n03241093 1994 +n03240683 1994 +n03494706 1996 +n04247876 1996 +n03503718 1996 +n04124202 1996 +n03480719 2008 +n02900160 2008 +n04290615 1902 +n04266162 1902 +n02768226 1903 +n02778669 1903 +n04028315 1903 +n03982430 1903 +n02882647 1903 +n03716327 1903 +n03020416 1903 +n04113406 1903 +n03442756 1903 +n04540255 1903 +n03941417 1903 +n04254680 2015 +n03982232 2015 +n02882301 2015 +n04256891 2015 +n03333252 2015 +n04023962 2015 +n02839351 2015 +n03134739 2015 +n03131967 2015 +n04409515 2015 +n03445777 2015 +n04118538 2015 +n03145719 2015 +n03742019 2015 +n02802426 2015 +n03267113 2015 +n03942813 2015 +n03482877 2015 +n02799071 2015 +n04039742 2015 +n02861147 2015 +n04540053 2015 +n03598930 2016 +n06785654 2016 +n03014440 2019 +n04579986 2019 +n03901750 2019 +n02802215 2022 +n03820318 2022 +n03278914 1905 +n03782006 1905 +n03781787 1905 +n04405762 1905 +n04401088 1905 +n03857828 1905 +n03916720 1905 +n02872529 1905 +n02979186 1905 +n02988304 1905 +n04060647 1905 +n02757462 1905 +n03656957 1905 +n03963294 1905 +n04405540 1905 +n03034405 1905 +n02979074 1905 +n02995345 1905 +n03775388 1905 +n04142731 1905 +n04392985 1905 +n03181293 1905 +n03777754 1905 +n03293741 1905 +n04392526 1905 +n02705944 1905 +n02992529 2058 +n04270371 2058 +n03179910 2058 +n03902125 2058 +n03488438 2058 +n03187595 2058 +n04044498 2058 +n04405907 2064 +n04043733 2064 +n04137773 2064 +n03516996 2088 +n03046921 2088 +n04077430 2065 +n03517760 2092 +n04315948 2092 +n03584254 2094 +n04546340 2094 +n03584400 2094 +n03436182 2094 +n02942349 2068 +n04404997 2068 +n03909160 1906 +n04026053 1906 +n04173511 1906 +n04070003 1906 +n03257586 1906 +n03509608 1906 +n04171208 1906 +n04450243 1906 +n04506506 1906 +n03434188 1906 +n03567066 1906 +n02923129 1906 +n03386544 2101 +n03046802 2101 +n03757604 2101 +n03927299 2105 +n03924679 2105 +n04608923 2105 +n03316105 2105 +n03767459 2105 +n03987990 2108 +n03084834 2108 +n03422072 2112 +n02855390 2112 +n02921029 2123 +n03425769 2123 +n03871524 1908 +n02852360 1908 +n04105704 1908 +n04408871 1830 +n04241573 1830 +n04402057 1830 +n03664943 1830 +n03605915 1830 +n03543012 2132 +n03196990 2132 +n03639497 2132 +n02840134 2133 +n04594218 2133 +n02999410 2133 +n03086868 2139 +n02790823 2139 +n03886641 2140 +n02709637 2140 +n03374838 2140 +n02835412 2140 +n04440963 2140 +n03011018 2140 +n03600977 2134 +n03093792 2134 +n03228967 2149 +n04573281 2149 +n03521076 2149 +n04144241 2149 +n04571958 2149 +n04160372 2149 +n03787523 2149 +n02928299 2153 +n04333869 2153 +n03213826 2150 +n04476972 2150 +n04593866 2150 +n02788689 1831 +n04451818 1831 +n04516672 1831 +n04116512 1831 +n03816136 1831 +n03294833 1831 +n04317420 1831 +n02908217 1831 +n03532342 1831 +n04185071 1831 +n04285622 1831 +n03653220 1831 +n04369282 1831 +n03346135 1831 +n03837422 1831 +n04317833 1831 +n03039947 1831 +n04100174 1831 +n04608567 1831 +n04208427 1831 +n04282872 2163 +n03396074 2163 +n02865931 2163 +n04112147 2163 +n04459909 2163 +n03659292 2163 +n04463679 2163 +n03487090 2163 +n03138344 2188 +n04317976 2188 +n03613592 2188 +n04393808 2188 +n03903424 2188 +n04099003 2188 +n03470629 2188 +n04264628 2193 +n02771004 2193 +n04193377 2193 +n04400737 2193 +n02670683 2195 +n04367011 2195 +n03489162 2164 +n03588951 2164 +n03919430 2164 +n03418242 2164 +n03967562 2164 +n03075097 2164 +n03239726 2164 +n03154446 2164 +n04387706 2164 +n03417970 2164 +n04050066 2164 +n04299963 2164 +n03684224 2204 +n03919289 2204 +n03970156 2204 +n03941684 2204 +n03966976 2204 +n04258859 2204 +n04266486 2204 +n03481172 2204 +n03946076 2204 +n04606574 2204 +n04154565 2204 +n04489817 2204 +n04140064 2204 +n03848348 2204 +n04150980 2204 +n04208210 2204 +n02898269 2204 +n04269944 2204 +n02966545 2223 +n03430313 2223 +n03715386 2223 +n03731695 2223 +n04457910 2225 +n03947466 2225 +n02680754 2225 +n03848168 2225 +n02697675 2225 +n02886434 2225 +n03474779 2228 +n03376938 2228 +n03488188 2228 +n04016240 2246 +n04016576 2246 +n03109150 2229 +n02877962 2229 +n02951585 2229 +n03511333 2207 +n03649909 2207 +n03995856 2253 +n04089976 2253 +n03995372 2210 +n03240140 2210 +n03154073 2211 +n04503593 2211 +n02844307 2211 +n02848216 2211 +n03624400 2211 +n02866386 2258 +n03030557 2258 +n03265032 2258 +n04148054 2265 +n03623556 2265 +n02764044 2265 +n04057047 2265 +n04594828 2265 +n03020692 2265 +n03954731 2265 +n04186848 2266 +n04250473 2273 +n04016684 2273 +n04163530 2273 +n02973904 2267 +n02880842 2267 +n03973628 2267 +n03041632 2267 +n03549473 2267 +n02976123 2267 +n03890093 2267 +n03658185 2267 +n04373089 2279 +n03911658 2279 +n02811468 2268 +n03498962 2268 +n04185804 2269 +n04332074 2269 +n04127521 2269 +n03067212 2271 +n04597400 2271 +n03601638 2272 +n04247630 2272 +n04283585 2272 +n03621049 2165 +n02997607 2165 +n03403643 2165 +n04103206 2297 +n04059516 2297 +n03724417 2297 +n03621377 2297 +n04293119 2297 +n03775199 2297 +n03101517 2297 +n03101986 2297 +n03454885 2297 +n03767966 2297 +n03266371 2305 +n04578934 2305 +n02850732 2305 +n03880531 2307 +n03133878 2307 +n02999138 2307 +n04270147 2307 +n03459328 2307 +n03284981 2307 +n04309548 2307 +n03101796 2307 +n03101156 2307 +n04500060 2307 +n03846677 2313 +n04317325 2313 +n03400231 2313 +n04097760 2313 +n04596742 2313 +n04138977 2313 +n03453231 2318 +n03047799 2318 +n03984234 2298 +n03262519 2298 +n04326676 2298 +n03992703 2298 +n04282992 2331 +n03018209 2331 +n02869155 2331 +n03713436 2332 +n03317788 2332 +n03625646 2167 +n03133050 2167 +n04546194 2169 +n03729826 2169 +n03053474 2169 +n03332271 2169 +n04277352 2169 +n04321453 2169 +n04296261 2169 +n03250847 2169 +n03715669 2169 +n02949202 2342 +n04374315 2342 +n02806379 2344 +n04381724 2344 +n04491388 2344 +n02698634 2348 +n03355925 2348 +n03141823 2348 +n03274265 2170 +n04453156 2170 +n04122349 2170 +n04156140 2170 +n03475581 2170 +n02902687 2170 +n04185946 2170 +n03908714 2172 +n04310904 2172 +n03145522 2173 +n04039381 2173 +n04292414 2369 +n04409806 2369 +n02772700 2369 +n04426316 2174 +n04333129 2174 +n03012013 2374 +n04072551 2374 +n03831382 2374 +n03651843 2374 +n04156946 2177 +n03873416 2177 +n02831894 2179 +n04150153 2179 +n03258905 2179 +n04292921 2179 +n02906734 2179 +n04367480 2179 +n04111190 2180 +n04549629 2180 +n04182322 2180 +n03949317 2180 +n03616428 2180 +n02764779 2180 +n03976657 2180 +n03351979 2180 +n03091044 2180 +n04434531 2180 +n03244231 2387 +n03127408 2387 +n04472563 2387 +n04277493 2387 +n02946824 2387 +n02871824 2393 +n04319937 2393 +n04230603 2393 +n03051396 2393 +n02931836 2393 +n04267577 2393 +n03726993 2393 +n03726760 2407 +n02883004 2407 +n04610676 2407 +n03775847 2409 +n04115996 2409 +n03711999 2409 +n03382856 2409 +n03374372 2394 +n04279353 2394 +n03908204 2181 +n03906997 2181 +n03518943 2181 +n03003091 2181 +n03128248 2181 +n03652100 2181 +n02783161 2419 +n04185529 2419 +n04033901 2419 +n03388183 2419 +n03326948 2419 +n03405725 1832 +n03842156 2429 +n03200906 2429 +n04550184 2429 +n02821943 2429 +n04379243 2429 +n04379964 2429 +n04549122 2429 +n03636649 2429 +n03201035 2429 +n04555400 2429 +n02912065 2429 +n02933112 2429 +n02766320 2429 +n02822579 2429 +n03649797 2429 +n03129753 2429 +n02870880 2429 +n03290653 2429 +n03298716 2429 +n04161981 2429 +n04165409 2429 +n03015254 2429 +n03337140 2430 +n04104147 2452 +n02963302 2452 +n04529681 2452 +n03050546 2432 +n02739550 2432 +n02818832 2433 +n02831724 2458 +n03962852 2458 +n03540914 2458 +n02920083 2458 +n04491638 2458 +n03388549 2458 +n03115762 2458 +n02920259 2458 +n04503413 2458 +n04236809 2458 +n04222210 2458 +n03482252 2458 +n03799876 2458 +n03225988 2458 +n03414676 2434 +n03465426 2434 +n04381587 2434 +n03116530 2434 +n02699629 2434 +n02894337 2434 +n04301000 2434 +n03090000 2434 +n03904060 2434 +n03620967 2434 +n03850492 2434 +n04398951 2434 +n03653583 2434 +n04603729 2434 +n03428226 2434 +n03238586 2434 +n03179701 2434 +n03246933 2434 +n03063968 2434 +n04480033 2434 +n03092883 2434 +n03011741 2476 +n02789487 2476 +n03735963 2476 +n04061681 2476 +n04130143 2495 +n04247736 2495 +n03231368 2486 +n03630262 2486 +n04608329 2489 +n04164868 2489 +n03164722 2489 +n03201208 2435 +n03202354 2505 +n04067921 2505 +n03367059 2437 +n04380533 2437 +n04057981 2437 +n03237340 2441 +n03018349 2441 +n03742115 2441 +n02804414 2442 +n03131574 2442 +n02970534 2442 +n03125729 2442 +n03001627 2449 +n04447861 2449 +n04326896 2449 +n04256520 2449 +n03858418 2449 +n02828884 2449 +n03649674 2518 +n03002711 2518 +n04099969 2518 +n04373704 2518 +n04429376 2518 +n04331277 2518 +n03632729 2518 +n03518445 2518 +n02738535 2518 +n04590933 2518 +n03376595 2518 +n04576002 2518 +n03790953 2518 +n02791124 2518 +n03262932 2532 +n04062428 2532 +n03786621 2532 +n04593077 2532 +n03168217 2534 +n02946270 2534 +n03801880 2520 +n04382438 2520 +n03380724 2520 +n04177755 2521 +n03165096 2521 +n03100346 2521 +n03693474 2521 +n03015149 2549 +n04344873 2549 +n03891251 2523 +n03360622 2523 +n03920867 2523 +n04177820 2523 +n04590021 2523 +n03016953 2451 +n03518305 2451 +n02843553 1833 +n03508101 1833 +n03666591 1833 +n06791372 1833 +n03099945 1833 +n03141702 1833 +n03243218 1833 +n03626760 1833 +n03904909 1833 +n03800933 1833 +n04200537 1833 +n04198797 1833 +n03699975 1833 +n03088707 1833 +n02776205 1833 +n04294212 1833 +n03339643 1833 +n03738472 1833 +n02676261 1833 +n04474466 1833 +n03008976 1833 +n02688443 1833 +n04114844 1833 +n03929660 1833 +n03287351 1833 +n03320046 1833 +n03553019 1833 +n03175604 1833 +n02678897 1833 +n04461879 1833 +n04359589 1833 +n03851341 1833 +n04331639 1833 +n04450749 1833 +n03923918 1833 +n03574816 1833 +n03074855 1833 +n04074963 1833 +n03302790 1833 +n03075768 1833 +n04554406 1833 +n04210120 1833 +n04562262 1833 +n02855089 1833 +n04526964 1833 +n02895606 1833 +n02730265 1833 +n04226826 1833 +n03467796 1833 +n04081844 1833 +n03614007 1833 +n03269401 1833 +n02729965 1833 +n03345837 1833 +n03111899 1833 +n04069276 1833 +n02694426 1833 +n03277771 1833 +n04252331 1833 +n03525827 1833 +n03744840 1833 +n03613294 1833 +n03827536 1833 +n04263760 1833 +n03568117 1833 +n03180969 1833 +n02895438 1833 +n03565288 1833 +n02683558 1833 +n03537241 1833 +n03267972 1833 +n04228054 1833 +n03664675 1833 +n04258333 2561 +n03272239 2561 +n04041069 2561 +n03423479 2561 +n03099147 2561 +n04265275 2561 +n04330267 2561 +n03031422 2562 +n03728437 2562 +n07273802 2563 +n06793231 2563 +n06794110 2563 +n06874185 2563 +n03269203 2564 +n02981321 2564 +n03582959 2646 +n04375405 2646 +n03307792 2566 +n02988963 2566 +n03580518 2566 +n04338517 2569 +n03279153 2569 +n03614532 2569 +n04586932 2569 +n02803349 2569 +n03915437 2569 +n03254862 2653 +n03025886 2653 +n02787622 2653 +n04615226 2653 +n04132603 2653 +n03467517 2653 +n02880546 2653 +n04224842 2653 +n03698360 2660 +n03716887 2660 +n03716966 2660 +n03495258 2660 +n02676566 2664 +n03499907 2664 +n04506289 2664 +n03272010 2664 +n04536153 2665 +n04536866 2665 +n02992211 2665 +n04536335 2665 +n04536595 2665 +n04330998 2665 +n04419642 2654 +n03273551 2654 +n04376400 2654 +n03928116 2655 +n03039015 2655 +n03854065 2655 +n02672831 2655 +n03452741 2684 +n04515003 2684 +n04278353 2684 +n03738066 2684 +n02766792 2688 +n03086457 2688 +n03496296 2685 +n04278247 2685 +n03840681 2656 +n04598582 2656 +n02891788 2656 +n03854815 2656 +n03393324 2656 +n04579667 2656 +n03945615 2656 +n03609397 2656 +n03372029 2697 +n02817799 2697 +n03228016 2705 +n04222847 2705 +n02804610 2706 +n03838899 2706 +n03037709 2707 +n04141076 2707 +n02793089 2698 +n02912894 2698 +n03369276 2698 +n03394916 2698 +n04487394 2698 +n03110669 2698 +n03494537 2700 +n03494278 2700 +n03086670 2700 +n03006626 2702 +n03884397 2702 +n02775483 2702 +n03343354 2702 +n03912218 2702 +n03245724 2702 +n02803934 2657 +n02804252 2657 +n02804123 2657 +n03301568 2657 +n03483230 2658 +n02869249 2658 +n03447721 2658 +n04532831 2658 +n04311174 2658 +n03721384 2658 +n03440682 2658 +n03017168 2658 +n03612965 2658 +n03720891 2658 +n03249569 2658 +n03157348 2658 +n02869737 2741 +n02803666 2741 +n04387400 2741 +n04249415 2741 +n04410086 2741 +n04243941 2572 +n03996416 2572 +n03999992 2572 +n02769290 2572 +n04004475 2572 +n03702248 2572 +n03789946 2572 +n04252653 2572 +n02977058 2572 +n03322940 2572 +n03082979 2572 +n04613939 2572 +n03765561 2572 +n04303357 2572 +n03997484 2572 +n03087069 2572 +n04303497 2572 +n04237423 2572 +n04417180 2572 +n04064401 2572 +n02938886 2572 +n04525305 2748 +n04243546 2748 +n02760199 2748 +n03418915 2750 +n02829596 2750 +n03551395 2750 +n04024274 2750 +n03007591 2752 +n03563200 2752 +n04004767 2752 +n03250405 2752 +n03672827 2752 +n03643737 2752 +n03675235 2752 +n04419868 2752 +n03985069 2776 +n04505036 2776 +n02794664 2777 +n04595285 2777 +n03225777 2778 +n02909285 2788 +n03571942 2788 +n04184435 2753 +n03240892 2753 +n03460040 2753 +n03646296 2791 +n03766044 2791 +n03287733 2754 +n03273061 2754 +n03507963 2796 +n03596285 2796 +n02761557 2796 +n02687423 2796 +n03433877 2796 +n04309049 2798 +n03579982 2798 +n04591517 2804 +n03424630 2804 +n03193107 2804 +n03859000 2804 +n04040373 2804 +n04099175 2799 +n03321103 2799 +n02872333 2810 +n04265904 2810 +n02700064 2802 +n04587404 2802 +n04304375 2797 +n03616763 2797 +n03146846 2757 +n03500699 2757 +n03075634 2757 +n04428191 2757 +n03496892 2757 +n03210245 2818 +n03496612 2818 +n04238763 2758 +n06359193 2758 +n03528523 2758 +n04175147 2758 +n03196324 2758 +n04358117 2829 +n04603399 2829 +n03918480 2829 +n03985232 2832 +n03180011 2832 +n03832673 2833 +n03956785 2833 +n03642806 2833 +n03485407 2833 +n03914337 2760 +n04561422 2760 +n03736064 2760 +n03063485 2760 +n04477219 2760 +n04587559 2760 +n03272125 2762 +n03996145 2762 +n02911332 2762 +n03034663 2846 +n03000684 2846 +n04380916 2846 +n04121728 2846 +n02786837 2846 +n04279462 2766 +n03689157 2766 +n03604156 2767 +n03452267 2767 +n02666196 2768 +n02679257 2768 +n03483823 2768 +n04171831 2573 +n04594489 2573 +n03106898 2573 +n03510244 2573 +n02934168 2573 +n03760310 2860 +n04471632 2860 +n03666362 2860 +n03020034 2860 +n03336575 2861 +n03604843 2861 +n04402984 2861 +n03898129 2861 +n04401828 2861 +n03995265 2862 +n03307037 2862 +n03300443 2864 +n03268918 2864 +n04004990 2864 +n03995535 2864 +n03350602 2574 +n03373237 2880 +n03251932 2881 +n04573937 2881 +n04334365 2881 +n03861271 2575 +n04520784 2575 +n04332243 2576 +n02688273 2576 +n03843555 2576 +n04216634 2887 +n04398834 2887 +n03066849 2887 +n03407865 2577 +n02710201 2577 +n04040759 2577 +n03736970 2577 +n04110955 2577 +n04112430 2577 +n02969010 2577 +n03096960 2577 +n03996849 2577 +n02761392 2577 +n02677718 2577 +n03102859 2577 +n03431243 2577 +n04392764 2577 +n03339529 2577 +n04289027 2896 +n04011827 2896 +n02709367 2896 +n03446268 2896 +n04568069 2896 +n03700963 2896 +n04167346 2896 +n04021798 2896 +n03432129 2896 +n04088797 2896 +n02918595 2896 +n03532672 2896 +n04228215 2896 +n03119510 2896 +n04063154 2896 +n04371774 2896 +n04590746 2896 +n04586581 2896 +n04586421 2896 +n03189083 2896 +n04211528 2896 +n03296081 2896 +n02903204 2896 +n03150232 2896 +n04282494 2896 +n03082807 2896 +n02686227 2896 +n02962200 2896 +n03198500 2896 +n02973017 2896 +n04475411 2896 +n03431745 2896 +n04306592 2896 +n02692086 2909 +n04154152 2909 +n04020298 2913 +n04574999 2913 +n03559999 2913 +n03659809 2913 +n03566329 2913 +n03767203 2944 +n04563204 2944 +n04101701 2944 +n02836035 2944 +n02980036 2944 +n03460147 2944 +n04115144 2944 +n03334912 2944 +n04543772 2944 +n04563413 2944 +n02974003 2944 +n04289690 2944 +n03944341 2944 +n03992509 2944 +n03430551 2944 +n03244919 2944 +n03874293 2944 +n04113194 2944 +n04290507 2962 +n02833793 2962 +n03943115 2962 +n04051549 2947 +n02764505 2947 +n04154340 2947 +n03456299 2915 +n03425413 2915 +n02835724 2915 +n04354487 2915 +n03487886 2915 +n02995871 2915 +n03329302 2917 +n04102406 2917 +n02966193 2917 +n04510706 2921 +n03054901 2921 +n03393761 2982 +n03209359 2982 +n02860415 2926 +n04067472 2926 +n04211857 2926 +n02848523 2897 +n03473227 2897 +n03032811 2897 +n04111668 2897 +n03873699 2988 +n03563460 2988 +n03320421 2988 +n03208556 2990 +n04019541 2995 +n02890188 2995 +n04448361 2995 +n03397947 2995 +n03954393 2995 +n04385799 2991 +n03712111 2991 +n04519153 2900 +n04313503 2900 +n03450018 2900 +n03602883 2900 +n04072193 2900 +n04372370 2900 +n02783459 3003 +n02927887 3003 +n04438507 3005 +n03374649 3005 +n03325088 3007 +n04422875 3007 +n02727141 3007 +n03775636 3013 +n04327682 3013 +n04445952 3008 +n04027023 3008 +n03186818 3008 +n03537412 3019 +n03793850 3019 +n03222516 3019 +n02826589 3019 +n03363549 2903 +n03795758 2903 +n03469493 2903 +n03103396 2904 +n03301833 2904 +n02686379 2904 +n03432061 2905 +n03389611 2905 +n04579432 2578 +n04218564 2578 +n03743279 2578 +n03506560 2578 +n02824448 2578 +n03123917 3037 +n03028596 3037 +n03201529 3037 +n04275548 2579 +n03794056 2579 +n03680858 2579 +n04568557 2579 +n03819994 2579 +n03639077 3045 +n03352628 3045 +n04529962 2581 +n04283255 2581 +n04283096 2581 +n04112252 2581 +n03357716 2581 +n04117464 2581 +n03536122 2581 +n04592741 2581 +n03303217 2585 +n03271574 2585 +n02887079 2587 +n03176386 2587 +n02768114 2590 +n04320973 2590 +n03933933 2590 +n03934042 2590 +n02767433 2590 +n04190052 2590 +n03638883 2590 +n02783994 2590 +n04283378 2590 +n02797692 2590 +n04314914 2590 +n02887209 2590 +n03938401 2590 +n02817031 2590 +n04098513 2590 +n03057920 2590 +n03495570 2590 +n04081044 2590 +n02888569 2590 +n04386051 2590 +n02871005 2590 +n04341414 2590 +n03506184 2590 +n04161358 2590 +n04430475 2590 +n03490884 2590 +n04038440 2590 +n03495039 2590 +n02953455 3064 +n03632577 3064 +n02871439 3065 +n03719343 3065 +n03814639 3071 +n03622839 3071 +n02713003 3071 +n02768655 3071 +n02737660 3077 +n03505133 3077 +n03019685 3077 +n02741475 3077 +n04148579 3078 +n03105467 3078 +n04190376 3078 +n04220036 3081 +n04094720 3081 +n04515129 3081 +n02886599 3081 +n04476831 3081 +n02815950 3081 +n04590263 3103 +n03223686 3103 +n04318787 3105 +n03592773 3105 +n03073977 3105 +n03988170 3105 +n04360798 3113 +n02974348 3113 +n03443149 3114 +n03821518 3114 +n02864593 3114 +n03637181 3114 +n04402449 3114 +n03733131 3114 +n04436329 3114 +n04119751 3106 +n04433585 3106 +n04045644 3108 +n03437941 3108 +n04436185 3108 +n03366974 3108 +n03601840 3108 +n02970685 3083 +n03937931 3083 +n03955489 3083 +n04123740 3083 +n03002096 3083 +n02835915 3083 +n02910145 3083 +n02770830 3083 +n04325041 3134 +n03288886 3134 +n04485082 3086 +n04275175 3086 +n03704549 3086 +n03801760 3086 +n02943871 3141 +n03262809 3141 +n02759257 2591 +n04009801 2591 +n03340723 2591 +n03643253 2591 +n03656484 2591 +n03838298 3151 +n03087366 3151 +n02943241 3151 +n02709101 3151 +n03094159 3151 +n04355933 3151 +n03309465 3151 +n03333711 3151 +n03395859 3151 +n03987376 3154 +n03049782 3154 +n04403413 3154 +n04583212 3154 +n03967396 2595 +n04147495 2595 +n03733925 2595 +n04565375 2595 +n03467068 2595 +n03231160 2595 +n02708711 2595 +n03813176 2595 +n03852280 2595 +n03739693 2595 +n03575958 2595 +n02981911 2595 +n03308152 2595 +n04419073 2595 +n04089836 2595 +n04383015 2595 +n03070193 3166 +n03760944 3166 +n02670382 3166 +n04340521 3166 +n03709206 3166 +n03092656 3166 +n04403638 3185 +n03760671 3185 +n02751295 3187 +n03293863 3187 +n03852688 3189 +n04044716 3189 +n04070207 3191 +n03333129 3191 +n04068601 3191 +n02978478 3195 +n03822767 3195 +n04145863 3195 +n03715114 3195 +n03279508 3188 +n03332989 3188 +n03667829 3188 +n02841506 3202 +n03484931 3202 +n03850053 3202 +n03082280 3202 +n03692522 3202 +n03868643 3167 +n03247083 3167 +n04070415 3167 +n04053508 3167 +n02794156 3167 +n03904782 3167 +n04421872 3167 +n02751215 3167 +n03735637 3167 +n03429288 3167 +n04437953 3167 +n02710600 3167 +n02939866 3167 +n03991837 3167 +n04382880 3167 +n04141975 3167 +n04392113 3167 +n03753077 3167 +n03554460 3167 +n04180888 3167 +n04118776 3167 +n02699915 3167 +n04029734 3214 +n03736470 3214 +n04559730 3217 +n04518343 3217 +n02710429 3217 +n03424862 3217 +n04001499 3217 +n03718335 3236 +n04274985 3236 +n02753394 3218 +n03046257 3218 +n04555897 3218 +n04355338 3218 +n04438304 3218 +n03544143 3218 +n03452594 3240 +n03196217 3240 +n02694662 3240 +n04548280 3240 +n02708093 3240 +n03909406 3240 +n03145147 3240 +n03197337 3241 +n02708433 3241 +n03973839 3241 +n04607869 3241 +n04328186 3243 +n03891332 3243 +n03026907 3243 +n04528968 3220 +n03759661 3220 +n02777100 3223 +n02708555 3261 +n03277459 3261 +n03272810 3225 +n03841143 3225 +n02702989 3225 +n04273796 3225 +n03842986 3225 +n04561287 3225 +n04541320 3225 +n03708843 3225 +n04449966 3168 +n03467984 3168 +n02879718 3168 +n02880393 3168 +n02892948 3168 +n03624134 3168 +n04373894 3168 +n04346157 3168 +n04008634 3168 +n02715712 3273 +n03343853 3273 +n04177041 3273 +n02689274 3273 +n03423306 3273 +n03875955 3273 +n02950826 3273 +n02759963 3282 +n03948459 3282 +n04502851 3282 +n03732020 3282 +n03803116 3282 +n04090263 3282 +n04076284 3282 +n04171459 3288 +n02760429 3288 +n03416775 3295 +n03695857 3295 +n04171629 3295 +n02760855 3296 +n02749479 3296 +n02760658 3296 +n03701391 3296 +n04347519 3303 +n02923682 3304 +n04517211 3304 +n03607659 3304 +n04450133 3304 +n03073296 3289 +n03178674 3289 +n04086273 3289 +n03427202 3289 +n03363749 3292 +n03802007 3292 +n04250224 3293 +n04585980 3293 +n02961451 3293 +n03136369 3274 +n03687928 3274 +n03615790 3277 +n02812949 3277 +n03699591 3277 +n03158885 3277 +n04054361 3278 +n03327691 3278 +n02904640 3278 +n02987492 3278 +n04121511 3325 +n03292475 3325 +n03375575 3325 +n02916350 3280 +n02950943 3280 +n03080633 3170 +n04015908 3170 +n02745611 3172 +n03178000 3172 +n03706229 3172 +n03080497 3172 +n02841315 3173 +n04272054 3173 +n04009552 3173 +n04403925 3173 +n03443912 3340 +n04356056 3340 +n04238617 3341 +n03399761 3341 +n03795976 3341 +n03864692 3341 +n03555662 3174 +n02963503 3174 +n04376876 3174 +n04317175 3174 +n03643149 3174 +n03858183 3174 +n04364545 3174 +n04083800 3355 +n03514451 3355 +n03938037 3175 +n04056180 3175 +n03302671 2598 +n04477387 2598 +n04080833 2605 +n04251144 2605 +n03868863 2605 +n02731629 2605 +n03876231 2606 +n04287747 2606 +n02889646 2609 +n03484576 2609 +n03323703 2609 +n04162706 2609 +n03652932 2609 +n04125853 2609 +n02891188 2609 +n03803284 2609 +n02999936 2609 +n02865665 3370 +n02910353 3370 +n03627232 3370 +n03041114 3370 +n03051249 3370 +n02982599 3370 +n03940256 3370 +n03229244 3370 +n04153751 3370 +n04238321 3370 +n02928608 3370 +n04159354 3370 +n03887185 3370 +n03682487 3370 +n04431745 3370 +n03683606 3370 +n03038281 3370 +n03043958 3370 +n02960690 3370 +n03804744 3370 +n04445327 3370 +n03836451 3370 +n02881906 3379 +n02880189 3379 +n03644858 3382 +n03497352 3382 +n04095342 3383 +n03476313 3383 +n04227900 3383 +n03499354 3383 +n02903126 3383 +n02860640 3383 +n02796318 3383 +n04127249 3383 +n04197781 3387 +n03057541 3387 +n04554871 3388 +n03423719 3388 +n03503477 3414 +n03855604 3414 +n03874599 3390 +n04136800 3390 +n03645011 3390 +n03075370 3390 +n03223162 3390 +n03886762 3394 +n02915904 3394 +n03476684 3394 +n03551084 3374 +n03208938 3425 +n03250089 3425 +n04505470 2610 +n04036303 2610 +n03085013 2610 +n03928814 2610 +n03033362 2611 +n04168199 2611 +n03589513 2611 +n03098140 2611 +n04401949 2611 +n03034244 2611 +n03968293 2611 +n03275681 2611 +n03163222 2611 +n04470953 2611 +n04257986 2611 +n02715229 2611 +n02955247 2611 +n04269270 2611 +n04072960 2611 +n04364160 2611 +n04257790 2611 +n02810471 2611 +n04414675 2611 +n03048883 3432 +n04595855 3432 +n03084420 3432 +n03577090 3453 +n03778817 3453 +n04004210 3453 +n03578656 3453 +n03125057 3456 +n03033986 3456 +n03788047 3441 +n03274561 3441 +n03261776 3461 +n03759954 3461 +n03691459 3461 +n04402580 3462 +n03505667 3462 +n03087816 3463 +n02963692 3463 +n04502670 3464 +n02917377 3464 +n04390873 3464 +n04599124 3464 +n04349401 3464 +n03846772 3443 +n03204955 3443 +n04041747 3474 +n04404817 3474 +n03207305 3475 +n04142999 3475 +n04610274 3475 +n04540547 3449 +n03359285 3481 +n03651388 3481 +n03870980 2614 +n04013729 2614 +n04258138 2615 +n03773035 2615 +n03485198 3487 +n02965783 3487 +n04059947 3489 +n03861842 3489 +n02921756 2616 +n02761834 2616 +n04201064 2616 +n03343737 2616 +n04058594 2617 +n04143140 2617 +n04494204 2617 +n03211117 2617 +n03918737 2617 +n03221351 2617 +n04464615 2617 +n03793489 2617 +n02714751 2617 +n03506727 2617 +n02823124 2617 +n04484432 3498 +n03913343 3498 +n03085219 3499 +n03782190 3499 +n04152593 3499 +n03196598 3499 +n03676759 3499 +n03361380 3499 +n04588739 3499 +n03187268 3499 +n02940570 3499 +n03085602 3511 +n02769075 3511 +n02988066 2619 +n03027250 2619 +n03070059 2619 +n03525454 2619 +n04538552 2619 +n02948557 3523 +n03031152 3523 +n02947818 3525 +n03746005 3527 +n03746155 3527 +n02935017 2620 +n03851787 2620 +n03706653 2620 +n03744276 2620 +n03708036 2620 +n04063868 2620 +n02763306 2620 +n03079230 3531 +n04533946 3531 +n02988679 3537 +n02988486 3537 +n02757061 3537 +n03492542 3532 +n03209910 3532 +n03359436 3533 +n04052757 3533 +n04534359 3534 +n02979399 3534 +n04391838 3535 +n03924069 3535 +n03694639 3549 +n04178190 3549 +n03636248 2623 +n03665366 2623 +n03358172 3552 +n03640988 3552 +n02948072 3552 +n03818343 3552 +n04534895 3552 +n04384910 3552 +n03423877 3552 +n03844045 3552 +n03549897 3552 +n03370387 3552 +n04335886 3552 +n04286575 3552 +n03272383 3552 +n03590841 3555 +n03018712 3555 +n03359137 3566 +n03665924 3566 +n03911767 3566 +n03503997 3553 +n04107743 3553 +n04339879 3553 +n03318294 3553 +n04148703 3553 +n04160847 3553 +n03824713 3553 +n02852173 3553 +n04456115 3553 +n03365374 3553 +n03401129 2624 +n03442597 2624 +n03187037 2624 +n04529108 2624 +n03975232 2624 +n03668279 3586 +n03482523 3586 +n04371050 3588 +n03772584 3588 +n04164757 3588 +n03544238 3588 +n04288272 2630 +n04116098 2630 +n03066359 3593 +n02886321 3593 +n03525074 2632 +n04585745 2632 +n03281145 2632 +n03126707 2632 +n04575824 2632 +n03178430 2632 +n03733281 1835 +n03078287 1835 +n03820728 1835 +n03440216 1835 +n04080138 1835 +n03302938 1835 +n03738241 1835 +n03085915 1835 +n04141712 1835 +n04082886 1835 +n04545858 3604 +n04041544 3604 +n04400289 3604 +n04402746 3604 +n03578055 3604 +n03580845 3604 +n04404412 3615 +n04137897 3619 +n04365328 3619 +n03072201 3619 +n03681477 3605 +n04358491 3605 +n03300216 3623 +n04595028 3623 +n04008385 3609 +n03674440 3609 +n04366116 3609 +n03401279 3609 +n03957315 1836 +n04488202 1836 +n04555700 1836 +n03206908 1836 +n02893692 1836 +n03210683 1836 +n03991062 1836 +n02920658 1836 +n04074185 1836 +n03147509 1836 +n02774152 1836 +n02978881 1836 +n03256032 1836 +n02773037 1836 +n03733805 1836 +n03438257 1836 +n03875806 1836 +n03733644 1836 +n03291819 1836 +n04183329 1836 +n03935335 1836 +n02801938 1836 +n04179712 1836 +n04139859 1836 +n03994614 1836 +n02946921 1836 +n04576211 1836 +n04600312 1836 +n02839910 1836 +n02949542 1836 +n03779370 1836 +n02964843 1836 +n04533700 1836 +n02975212 1836 +n02974697 1836 +n04531098 1836 +n03233905 1836 +n04060904 1836 +n03871083 1836 +n04560292 1836 +n02883344 1836 +n03062336 3634 +n03920288 3634 +n03456024 3634 +n04176190 3634 +n04499062 3634 +n04350581 3634 +n02880940 3634 +n02978753 3634 +n04050933 3634 +n02927764 3634 +n04130257 3678 +n03775546 3678 +n03984759 3678 +n02997910 3678 +n04263257 3678 +n04023695 3678 +n04103769 3636 +n02682922 3636 +n04254120 3636 +n02754103 3636 +n03571280 3636 +n03174731 3640 +n02815749 3640 +n03629520 3640 +n03063073 3640 +n03002948 3640 +n04397452 3640 +n03216710 3640 +n03301940 3641 +n04207343 3641 +n03055418 3641 +n04083309 3641 +n02769748 3644 +n04122685 3644 +n02816656 3644 +n04134008 3644 +n02970408 3644 +n03883524 3644 +n03253886 3644 +n02870676 3644 +n04452528 3644 +n03709823 3644 +n04026417 3644 +n03235796 3644 +n03291963 3644 +n04124098 3644 +n04122825 3644 +n03993180 3644 +n04204081 3644 +n04446844 3644 +n03414029 3644 +n03619793 3644 +n03958227 3644 +n03445617 3644 +n04235860 3644 +n03469903 3644 +n03461288 3644 +n04284572 3719 +n03972524 3719 +n04544450 3719 +n03321563 3719 +n03521899 3730 +n03898395 3730 +n03372549 3646 +n04496872 3646 +n04559910 3646 +n02918831 3646 +n03676623 3646 +n04249882 3646 +n04206225 3646 +n02823750 3646 +n04119360 3646 +n03443371 3646 +n04592099 3646 +n03062245 3650 +n04131690 3650 +n03914438 3650 +n03883385 3652 +n03050864 3652 +n03482405 3652 +n02893608 3652 +n04204238 3652 +n04582349 3652 +n03764736 3656 +n02823510 3656 +n04255586 3656 +n03904433 3657 +n02946509 3657 +n04103364 3657 +n03791053 3657 +n04170037 3657 +n04509417 3657 +n04543158 3657 +n02804515 3657 +n03484083 3657 +n02766534 3657 +n02834778 3657 +n03538634 3657 +n04467099 3657 +n02959942 3657 +n04482393 3657 +n02740533 3762 +n04065272 3762 +n04464852 3762 +n04252077 3762 +n02916179 3762 +n03684823 3762 +n04335435 3762 +n03791235 3762 +n04465501 3762 +n03384352 3762 +n02740300 3773 +n02739889 3773 +n03256788 3774 +n02946348 3774 +n04520382 3774 +n04211219 3778 +n03193597 3778 +n03272562 3778 +n04389854 3778 +n04465358 3778 +n04310018 3778 +n03193260 3789 +n03193423 3789 +n03506880 3780 +n04490091 3780 +n02704792 3780 +n03389761 3780 +n03790512 3780 +n03444034 3780 +n02958343 3780 +n04252225 3780 +n03345487 3797 +n04520170 3797 +n04467665 3797 +n04474035 3797 +n03417042 3797 +n03632852 3797 +n04461696 3797 +n03256166 3797 +n04465666 3797 +n03930630 3797 +n03173929 3805 +n03796401 3805 +n03896419 3805 +n03977966 3805 +n02871314 3805 +n04466871 3800 +n03785016 3800 +n02814533 3802 +n03680512 3802 +n03777568 3802 +n03268790 3802 +n03770679 3802 +n03100240 3802 +n03079136 3802 +n02930766 3802 +n04201733 3802 +n04037443 3802 +n03498781 3802 +n04097373 3802 +n02831335 3802 +n04285965 3802 +n04166281 3802 +n03594945 3802 +n03670208 3802 +n03141065 3802 +n02701002 3802 +n04516354 3802 +n04322801 3802 +n04347119 3802 +n03870105 3802 +n03543394 3802 +n04285008 3802 +n03119396 3802 +n03122295 3764 +n02970849 3764 +n03538406 3848 +n03255899 3848 +n03599486 3848 +n03981924 3848 +n03868242 3848 +n04397027 3766 +n03648431 3766 +n04176068 3766 +n02797295 3766 +n04204347 3766 +n03490119 3766 +n02835271 3768 +n04126066 3768 +n04026813 3768 +n03792782 3768 +n02968473 3769 +n03435991 3864 +n02912557 3864 +n04297098 3864 +n03389889 3864 +n02775039 3771 +n03393912 3771 +n03895866 3771 +n02932523 3771 +n02885108 3870 +n04389521 3870 +n03828020 3871 +n04020912 3871 +n03200357 3871 +n04246855 3871 +n04065789 3659 +n02747177 3659 +n03678558 3659 +n04134523 3661 +n03935116 3661 +n02900705 3665 +n03078995 3665 +n03210372 3665 +n03619650 3665 +n04548362 3665 +n02962843 3665 +n03986355 3665 +n03214582 3665 +n03031012 3665 +n04200000 3665 +n03468821 3665 +n02755140 3665 +n03683995 3665 +n04608435 3665 +n04556533 3665 +n02774630 3665 +n03438863 3665 +n03487533 3899 +n04137217 3899 +n02773838 3899 +n04491769 3899 +n03498441 3899 +n03420345 3903 +n04570815 3903 +n02967294 3903 +n03986949 3903 +n03865371 3903 +n04518764 3903 +n02863750 3666 +n03355768 3666 +n02881193 3666 +n03633091 3666 +n02876657 3666 +n02877266 3666 +n03990474 3666 +n03950228 3666 +n02808440 3666 +n03786901 3666 +n02909870 3666 +n03241496 3666 +n03129001 3666 +n04591887 3666 +n04001265 3666 +n04493381 3666 +n03572321 3666 +n04438897 3666 +n02801525 3666 +n03784270 3666 +n02758960 3666 +n03029445 3666 +n02795169 3666 +n04388743 3666 +n03593526 3666 +n02993368 3666 +n04447028 3914 +n03350204 3914 +n04149083 3915 +n04263336 3915 +n04246060 3916 +n03983396 3916 +n04557648 3916 +n03603722 3916 +n02985963 3916 +n03449451 3916 +n03937543 3916 +n02962061 3916 +n03359566 3916 +n02823428 3916 +n03571625 3916 +n03174450 3916 +n04579056 3916 +n03140431 3916 +n04591713 3916 +n02960903 3916 +n03923379 3916 +n04579145 3945 +n04560804 3945 +n03521675 3950 +n03295246 3950 +n04422727 3950 +n02952374 3950 +n04518132 3950 +n03709363 3956 +n03595409 3956 +n04139140 3918 +n04398044 3918 +n03259401 3918 +n04516214 3918 +n04324297 3918 +n03612814 3918 +n02939185 3918 +n03915118 3918 +n04397768 3918 +n03063689 3918 +n03064250 3971 +n04132985 3971 +n04399158 3971 +n04225031 3920 +n03543603 3920 +n03379343 3920 +n03797390 3923 +n03693707 3923 +n04389430 3923 +n03063599 3984 +n04443766 3984 +n02824058 3984 +n02836174 3930 +n02843158 3930 +n04553703 3930 +n02788572 3930 +n02823335 3934 +n04592005 3934 +n03610418 3934 +n03426134 3935 +n04560113 3935 +n04173046 3935 +n02732072 3935 +n04078574 3935 +n04562935 4001 +n04049303 4001 +n02951703 3936 +n02705429 3936 +n03101664 3936 +n02815834 3936 +n04516116 3936 +n03725600 3936 +n04522168 3936 +n03133415 3936 +n03593122 3936 +n03960374 3668 +n04476259 3668 +n02982515 3668 +n03259009 3668 +n03004275 3668 +n04131929 3668 +n03416900 3668 +n03565830 3668 +n03543735 3668 +n03858085 3668 +n04255163 3668 +n02747802 3668 +n03871628 3669 +n02919414 3669 +n03167978 3669 +n02778456 4026 +n03500389 4026 +n03870672 4026 +n02782681 3671 +n02971356 3671 +n03064758 3671 +n04200258 3671 +n04253057 3671 +n03908618 3671 +n03127925 3671 +n02786331 3671 +n04589325 3671 +n03014705 3671 +n04340750 3671 +n02998003 3671 +n03710193 3671 +n02978055 3671 +n02836392 3671 +n03871724 3671 +n04452615 4040 +n04462011 4040 +n03064350 4040 +n03535024 4040 +n04477548 4040 +n02989099 4040 +n02977438 4041 +n04125257 4041 +n02976939 4041 +n04125021 4041 +n04469813 1837 +n03002341 1837 +n04214282 1837 +n04019101 1837 +n04172342 1837 +n03538179 1837 +n04524313 1837 +n04231693 1837 +n04103918 1837 +n04467307 1837 +n04196502 1837 +n03678362 1837 +n03306385 4060 +n04212165 4060 +n04468005 4060 +n02924116 4060 +n03680942 4060 +n03394272 4071 +n03896233 4071 +n04349306 4071 +n03711044 4071 +n03394480 4071 +n03078802 4075 +n02917067 4075 +n04487081 4072 +n03769881 4072 +n04146614 4072 +n04310157 4063 +n02918964 4063 +n04099429 4063 +n03764276 4063 +n03773504 4063 +n03125870 4063 +n04235291 4063 +n03478589 4087 +n04389033 4087 +n03886053 4087 +n03919096 4087 +n03549199 4087 +n02686568 4089 +n04530566 4089 +n04264914 4089 +n03547229 4089 +n03510583 4096 +n04308084 4096 +n03666917 4096 +n03491032 4100 +n03439814 4100 +n03512147 4100 +n04552348 4100 +n02691156 4100 +n02759387 4100 +n02867715 4107 +n02704645 4107 +n04012084 4107 +n02690373 4107 +n02842573 4107 +n03365231 4107 +n03595860 4107 +n03335030 4107 +n04308273 4107 +n04160586 4107 +n02686121 4112 +n04583620 4112 +n03604311 4115 +n03596543 4115 +n04308397 4116 +n03577672 4116 +n02692877 4102 +n02850950 4102 +n02782093 4102 +n03541923 4102 +n02858304 4097 +n04476116 4097 +n04610013 4097 +n04194289 4097 +n04128837 4097 +n02792409 4097 +n03662601 4129 +n03977592 4129 +n03447447 4129 +n04158807 4129 +n02792552 4129 +n04095210 4129 +n04495843 4129 +n04024983 4129 +n03939178 4129 +n04244997 4129 +n03329663 4129 +n04409128 4129 +n02947660 4129 +n03344393 4129 +n03790230 4129 +n03236423 4139 +n03981566 4139 +n03545470 4139 +n04229480 4144 +n02951358 4144 +n03199901 4144 +n04037964 4144 +n03105306 4144 +n04612504 4144 +n03436891 4144 +n03602081 4144 +n04115456 4144 +n03609235 4154 +n03861430 4154 +n03254374 4154 +n04038231 4156 +n04038338 4156 +n04273569 4149 +n03859170 4149 +n02932891 4149 +n03552749 4149 +n04197110 4132 +n04606251 4132 +n03896103 4132 +n03947888 4132 +n03668488 4132 +n03541269 4132 +n04309348 4132 +n02965300 4132 +n04224543 4132 +n04552696 4132 +n03673027 4173 +n03698604 4181 +n02965216 4181 +n03141327 4181 +n03874138 4177 +n04317063 4177 +n02878222 4178 +n03095699 4178 +n02784124 4178 +n03845190 4178 +n04347754 4180 +n03466493 4180 +n03397266 4180 +n02812201 4180 +n03466600 4180 +n02687172 4180 +n03718212 4180 +n03180504 4180 +n02755529 4191 +n03811295 4191 +n04612373 4133 +n03045228 4133 +n03327133 4133 +n04242408 4133 +n03612010 4133 +n03186285 4133 +n04128499 4133 +n02793199 4133 +n04147183 4133 +n04587327 4133 +n04483307 4207 +n02981792 4207 +n02982416 4207 +n04266014 4098 +n04264765 4098 +n03218198 4090 +n02860847 4090 +n02861022 4090 +n04336792 4068 +n03122202 4068 +n06271778 1838 +n06255081 1838 +n06263609 1838 +n06276697 4221 +n06272290 4221 +n06276501 4221 +n06277280 4224 +n06281040 4224 +n06277135 4224 +n06278338 4227 +n06278475 4227 +n06274760 4225 +n06272803 4225 +n06272612 4225 +n06263369 4223 +n06266417 4223 +n06595351 4235 +n06267145 4235 +n06596607 4237 +n06596727 4237 +n06596364 4237 +n06596474 4237 +n06267893 4238 +n06267564 4238 +n06267655 4238 +n06266633 4236 +n06267991 4236 +n03938244 1055 +n03872495 1055 +n04135315 4249 +n02823964 4249 +n03408444 4249 +n02967626 4249 +n04053677 1056 +n04151940 1056 +n04453910 1056 +n03380867 1056 +n04014297 1056 +n03045698 1056 +n04605726 1056 +n04513827 1056 +n03050026 1056 +n03724870 1056 +n03341153 1056 +n03366823 1056 +n03058107 1056 +n02952237 1056 +n03357376 1056 +n03221059 1056 +n03376279 1056 +n03956623 1056 +n03261603 1056 +n02944459 4255 +n04201297 4255 +n02954938 4256 +n03717622 4256 +n03661340 4256 +n04041243 4275 +n02877765 4275 +n03825788 4275 +n03047690 4257 +n04199027 4257 +n02735538 4257 +n02872752 4257 +n03361550 4257 +n04241394 4257 +n03865949 4257 +n04122578 4282 +n04239786 4282 +n03027625 4282 +n04124370 4282 +n04272389 4282 +n02904927 4282 +n04593524 4282 +n04545748 4282 +n02855701 4282 +n02713364 4282 +n03041449 4282 +n03411079 4282 +n03680355 4282 +n04120489 4282 +n03868406 4282 +n02882894 4282 +n03967270 4282 +n04022332 4282 +n04133789 4282 +n03025250 4282 +n04027706 4306 +n04386664 4306 +n03364008 4306 +n03297103 4306 +n03600475 4284 +n02925666 4284 +n04228581 4284 +n03521544 4284 +n04089666 4284 +n04116294 4284 +n03516844 4284 +n04542715 4284 +n03124043 4284 +n03798061 4286 +n02873733 4286 +n03067518 4258 +n03046133 4258 +n04554211 4258 +n04444749 4258 +n03797896 4258 +n04192858 4258 +n02888270 4258 +n04151581 4258 +n04187233 4258 +n02826068 4258 +n04181718 4258 +n04191943 4258 +n04281375 4258 +n04416005 4258 +n04105068 4258 +n03314608 4258 +n03530910 4258 +n04187061 4258 +n02955065 4258 +n03725035 4258 +n03315644 4258 +n03142679 4258 +n02937958 4258 +n02739668 4258 +n02840245 4258 +n02840619 4258 +n03546766 4258 +n02851099 4258 +n03673767 4258 +n03959701 4328 +n03539433 4352 +n02740764 4352 +n02895154 4354 +n03513376 4354 +n02950632 4354 +n03623338 4354 +n03929855 4356 +n04130907 4356 +n04589890 4330 +n03347037 4330 +n04590553 4330 +n03788365 4330 +n03637318 4333 +n03889871 4333 +n03652729 4334 +n02825657 4334 +n04172776 4334 +n02843684 4334 +n02951843 4334 +n03610524 4334 +n02763901 4371 +n04507155 4371 +n03415252 4371 +n03409591 4337 +n04357121 4337 +n03718789 4337 +n03220513 4337 +n03522100 4337 +n04435653 4337 +n03546235 4337 +n04523525 4337 +n04234887 4337 +n03413684 4337 +n04417672 4337 +n03148727 4379 +n03435593 4379 +n03847471 4379 +n02796207 4383 +n04087709 4383 +n03527444 4340 +n04141327 4340 +n04207763 4340 +n03548086 4341 +n04423845 4341 +n03213538 4341 +n03657121 4341 +n03424325 4342 +n03314378 4342 +n04229816 4400 +n02983189 4400 +n02862048 4346 +n04192698 4346 +n03000247 4403 +n02916936 4403 +n03112719 4403 +n03146219 4403 +n02933340 4349 +n04045255 4349 +n02873520 4349 +n04589190 4350 +n03592669 4350 +n03151077 4350 +n04211356 4350 +n04525584 4412 +n04590129 4412 +n04102285 4412 +n04418357 4414 +n04209239 4414 +n02925107 4351 +n02890513 4351 +n03436549 4260 +n03291741 4260 +n02992368 4260 +n07248320 4260 +n03590306 4260 +n03958752 4260 +n04207151 4262 +n03885293 4262 +n03654576 4262 +n02767665 4262 +n03114379 4262 +n02785648 4262 +n02876084 4262 +n04240752 4262 +n02820210 4262 +n04236377 4262 +n02851939 4262 +n03309356 4262 +n04231272 4262 +n04162433 4262 +n02786058 4434 +n04369025 4434 +n02979836 4434 +n03267821 4434 +n04033995 4437 +n02683323 4437 +n02849154 4437 +n02822220 4437 +n03731483 4437 +n03898633 4447 +n03266749 4447 +n03128427 4447 +n03123553 4450 +n04034262 4450 +n04046400 4438 +n03688405 4438 +n04118021 4265 +n03223299 4265 +n03727837 4265 +n04144539 4459 +n04183217 4459 +n03998194 4459 +n02904233 4459 +n04297847 4459 +n04066270 4459 +n02908773 4459 +n03353951 4266 +n03445326 4266 +n04528079 4266 +n03875218 4266 +n03805725 4266 +n03437430 4266 +n03115897 4266 +n03284743 4266 +n04525417 4266 +n03342015 4472 +n03284886 4472 +n03285578 4472 +n03844233 4472 +n04557308 4472 +n03646020 4482 +n04581102 4482 +n03261019 4268 +n03973402 4268 +n03642444 4268 +n04450994 4268 +n04084889 4268 +n04412097 4268 +n03337383 4270 +n03729308 4270 +n03970546 1057 +n03802393 1057 +n04395024 1057 +n04525038 1057 +n02809105 1057 +n03615406 1057 +n02828427 1057 +n04123567 1057 +n03188725 1057 +n04539794 1057 +n03253796 1057 +n03013850 1057 +n03115400 1057 +n04459610 1057 +n03132666 1057 +n03885194 1057 +n03019938 1057 +n03326795 1057 +n03115180 1057 +n04525191 1057 +n04138261 1057 +n03625355 1057 +n04137355 1057 +n04003856 1057 +n03356982 1057 +n04568841 1057 +n03409297 1057 +n02944579 1057 +n04605163 1057 +n02977330 1057 +n04395106 1057 +n03779128 1057 +n02904803 1057 +n04524941 1057 +n04198453 1057 +n02878425 1057 +n03703862 1057 +n03819595 1057 +n03877351 1057 +n04613015 1057 +n03914831 1057 +n03932670 1057 +n03785237 1057 +n04414476 1057 +n04056932 1057 +n02675219 1057 +n03106722 1057 +n03917814 1057 +n03016868 1057 +n02922798 1057 +n04432662 1057 +n02802990 1057 +n03631177 1057 +n04189282 1057 +n03435743 1057 +n03983612 1057 +n03175189 1057 +n03357267 1057 +n04184316 1057 +n02942460 1057 +n03836906 1057 +n03233123 1057 +n03430091 1057 +n03855214 1057 +n03386726 1057 +n03437741 1057 +n04599235 1057 +n04350458 1057 +n04383839 1057 +n03653110 1057 +n04502502 1057 +n03854421 1057 +n02952109 1057 +n03298858 1057 +n03160740 1057 +n03843438 1057 +n04393549 1057 +n02903852 1057 +n03947798 1057 +n03529444 1057 +n04482297 4514 +n03227317 4514 +n03595523 4514 +n03429914 4530 +n04496614 4530 +n03016609 4530 +n03485794 4534 +n03463666 4534 +n03258330 4534 +n03207743 4534 +n04459362 4534 +n02786198 4534 +n03471190 4534 +n02834397 4534 +n04127904 4534 +n03897943 4534 +n03490006 4583 +n03887697 4583 +n03207835 4583 +n03381776 4587 +n03383099 4587 +n04278447 4587 +n03505383 4587 +n04455652 4587 +n03712337 4587 +n02782602 4587 +n03598151 4592 +n03775747 4592 +n03410571 4592 +n03696568 4592 +n04307767 4592 +n03645577 4592 +n03358380 4588 +n04208065 4588 +n03809603 4539 +n02820556 4539 +n03703730 4545 +n03938522 4545 +n04045397 1059 +n03663531 1059 +n03662719 4612 +n03703945 4612 +n03662887 4612 +n04326084 1060 +n02897820 1060 +n14943580 1060 +n14785065 1060 +n15074568 1060 +n14820180 1060 +n04035912 1060 +n03766935 4616 +n04313628 4616 +n03530511 4616 +n03460297 4616 +n03149686 4616 +n03455488 4616 +n03344642 4617 +n03796522 4617 +n03043693 4617 +n02681392 4617 +n04339638 4618 +n15102455 4618 +n04234455 4633 +n03341297 4633 +n04453390 4633 +n14908027 4620 +n14976759 4620 +n03111177 1061 +n03282401 1061 +n03451798 1061 +n03292603 1061 +n03815149 1061 +n03723267 1061 +n02892304 1061 +n07621618 1061 +n02732572 1061 +n03178782 1061 +n02681518 1061 +n03397087 1061 +n03635108 1061 +n04395651 4649 +n03762602 4649 +n03282591 4649 +n06883725 4649 +n03516367 4649 +n04682462 4649 +n03354903 4655 +n02788021 4655 +n04458633 4655 +n03140292 4655 +n03362890 4655 +n05244934 4658 +n11487732 4658 +n03597469 4650 +n03397532 4650 +n03649161 4650 +n03914106 4650 +n02787435 4650 +n03030262 4650 +n02685082 4650 +n02887970 4666 +n02852043 4666 +n03909020 4666 +n03814906 4666 +n03436075 1062 +n03899328 1062 +n04096066 1062 +n03895293 1062 +n04215402 4678 +n04461570 4678 +n03904183 4678 +n03519981 4679 +n02969323 4679 +n04426618 4679 +n04466613 4679 +n03215508 4684 +n03306610 4684 +n02744323 4684 +n02762508 4689 +n02758863 4689 +n04335209 4686 +n04334599 4686 +n03948242 4687 +n03539678 4687 +n02680512 4680 +n03089014 4680 +n03895585 4680 +n04493505 4698 +n04244379 4698 +n04250850 4698 +n04562496 4698 +n02984469 4700 +n02795528 4700 +n03944672 4700 +n03533014 4700 +n04385536 4706 +n03231912 4706 +n03147280 4709 +n04257684 4709 +n04497962 4699 +n04298661 4699 +n03415749 4699 +n02981024 4712 +n04048441 4712 +n04391569 1063 +n02784218 1063 +n03572107 4717 +n02680337 4717 +n03957420 4720 +n02992795 4720 +n03506028 4718 +n03438071 4718 +n04440749 4718 +n02739427 4718 +n04040247 4725 +n02971167 4725 +n04381994 1064 +n04087432 1064 +n03153375 4729 +n03438661 4729 +n03527149 4729 +n03963198 4729 +n04284002 4731 +n04380346 4731 +n03383948 4731 +n04284438 4731 +n04263502 4735 +n04398688 4735 +n04350769 4735 +n04597913 4735 +n03557270 4735 +n04381073 4735 +n03180384 4735 +n02976249 4736 +n02928049 4736 +n04307986 4736 +n04380255 4737 +n02973805 4737 +n02687992 1065 +n04406817 1065 +n02693246 1065 +n02692232 1065 +n03745146 1065 +n04329190 1065 +n04306080 1065 +n04551055 4756 +n03452449 4756 +n03131669 4756 +n03768916 1066 +n03214253 1066 +n03587205 4762 +n03406966 4762 +n03093574 1067 +n03672352 1067 +n03051540 4765 +n02729837 4765 +n03655720 4767 +n03456186 4767 +n02855925 4767 +n03825080 4767 +n04015204 4767 +n03859495 4767 +n03815482 4767 +n03625943 4767 +n03692379 4767 +n02728440 4767 +n03068998 4767 +n03763968 4767 +n03502509 4767 +n03877472 4767 +n03419014 4767 +n02742322 4767 +n04596852 4767 +n03863108 4767 +n03441112 4767 +n02671780 4767 +n02846141 4767 +n03381126 4767 +n02756098 4767 +n04059157 4767 +n02814774 4767 +n03746330 4767 +n04335693 4767 +n04241249 4767 +n04194127 4773 +n03863262 4773 +n04001845 4773 +n02738859 4773 +n03386870 4773 +n03216402 4773 +n02730930 4773 +n04207903 4773 +n03121897 4773 +n03015478 4773 +n03268645 4773 +n04266375 4773 +n03623198 4773 +n03450516 4774 +n04532106 4810 +n03010795 4810 +n02669723 4810 +n02811719 4780 +n03324928 4780 +n03239259 4780 +n03615563 4780 +n03513137 4781 +n03531281 4781 +n04498389 4781 +n03497657 4781 +n02954340 4781 +n03124474 4781 +n04432203 4781 +n03379051 4818 +n03492922 4818 +n03127747 4818 +n04356595 4821 +n03404360 4821 +n03124170 4821 +n02817516 4821 +n02859184 4821 +n04248507 4821 +n03325941 4821 +n02987379 4821 +n04259630 4821 +n04482177 4821 +n02818135 4821 +n03984643 4821 +n02869837 4821 +n03950899 4821 +n02881757 4821 +n03766322 4821 +n03046029 4843 +n03937835 4843 +n02799323 4822 +n03103563 4822 +n04209133 4822 +n03610682 4822 +n02776825 4822 +n03331077 4822 +n04387095 4822 +n02831237 4822 +n04232153 4822 +n03049924 4822 +n04228693 4822 +n04556408 4822 +n02807133 4822 +n03787032 4822 +n04612026 4854 +n02816768 4854 +n03502331 4783 +n04143897 4783 +n04104770 4783 +n03188531 4783 +n04605572 4783 +n04097866 4783 +n04574067 4783 +n03655072 4783 +n04230808 4783 +n04508163 4783 +n04172904 4783 +n04531873 4783 +n04197391 4783 +n03863923 4783 +n03540090 4783 +n02922578 4783 +n04488530 4783 +n04489008 4783 +n04332580 4783 +n03404149 4783 +n03816005 4783 +n04370774 4783 +n03657511 4783 +n04371563 4783 +n03487642 4783 +n04046277 4783 +n04350905 4783 +n04370048 4783 +n03450734 4783 +n03314884 4862 +n03826039 4862 +n02998841 4862 +n03719743 4863 +n03797182 4863 +n03505504 4863 +n04495698 4863 +n03325584 4863 +n04325704 4863 +n03520493 4896 +n03615655 4896 +n03237992 4867 +n03617480 4867 +n02667093 4867 +n02807616 4867 +n03410938 4869 +n04269822 4869 +n03866082 4870 +n03454442 4870 +n03770439 4870 +n03617312 4870 +n03732458 4870 +n02780815 4870 +n03205669 4870 +n04136333 4870 +n03534580 4870 +n03920737 4871 +n02892767 4871 +n03387323 4871 +n04223299 4871 +n03421324 4871 +n03132776 4871 +n04508949 4871 +n02863014 4871 +n02944146 4871 +n04514241 4871 +n03013580 4871 +n04508489 4871 +n03112869 4919 +n03885788 4919 +n04103665 4919 +n03673450 4923 +n03688192 4923 +n02930214 4923 +n04509171 4932 +n03824381 4932 +n02854739 4928 +n04426427 4928 +n02837887 4928 +n02901114 4928 +n03885028 4928 +n03234164 4928 +n04602956 4874 +n03629231 4874 +n03595614 4874 +n03163381 4874 +n03978966 4874 +n03057021 4875 +n03045337 4875 +n04252560 4875 +n04363777 4948 +n03254046 4948 +n04187970 4948 +n03398228 4948 +n03630383 4948 +n03456665 4948 +n03589791 4948 +n04049405 4948 +n02957008 4948 +n04123448 4948 +n03404251 4948 +n03751269 4957 +n04222307 4957 +n02867966 4957 +n03902756 4957 +n04368496 4957 +n03228254 4957 +n02864504 4957 +n03891051 4957 +n03844815 4958 +n04479046 4958 +n03770954 4961 +n04122492 4961 +n03980874 4949 +n04445154 4949 +n04445040 4949 +n03607923 4949 +n04173907 4949 +n04497570 4949 +n04186455 4949 +n02936402 4949 +n04205318 4879 +n03877674 4879 +n04370288 4879 +n04132158 4879 +n02896442 4879 +n03019434 4879 +n04233715 4879 +n03600285 4879 +n03903733 4879 +n03688605 4879 +n03594734 4879 +n03107488 4879 +n03660124 4879 +n04337287 4879 +n02825442 4879 +n02910864 4879 +n03543112 4982 +n02831595 4982 +n03653833 4982 +n03815615 4882 +n03128085 4882 +n02865351 5001 +n04591157 5001 +n02883205 5001 +n02847631 5001 +n03710721 4885 +n04371430 4885 +n02837789 4885 +n03226538 4888 +n03943920 4888 +n04222470 4888 +n03885669 4888 +n02925519 4888 +n04427715 5014 +n04504141 5014 +n04502197 4889 +n02963159 4889 +n04370456 4889 +n04021028 4889 +n04453666 4785 +n03464053 4785 +n02944075 4785 +n03236735 4785 +n02861387 5021 +n02854926 5021 +n03480579 5021 +n03062015 5024 +n04136161 5024 +n02936570 5024 +n04355511 5024 +n03013438 5024 +n04334105 5024 +n03450230 5024 +n03604400 5024 +n03205574 5024 +n02898585 5034 +n04397645 5034 +n02781121 5034 +n03429682 4787 +n03775071 4787 +n03616979 4787 +n02827606 4788 +n03405595 4788 +n03781683 5043 +n03527565 5043 +n02972397 5043 +n03540267 4790 +n04434932 5048 +n04254777 5048 +n04323819 5048 +n03885904 5049 +n03710637 5049 +n02752496 5050 +n04378956 5050 +n03622931 5050 +n02736798 5050 +n03836976 5051 +n03026506 5051 +n03384891 4791 +n03289985 4791 +n03859958 4791 +n02726017 4791 +n03113657 4791 +n03320519 4791 +n03113835 4791 +n03398153 4791 +n04285803 4791 +n02669534 4791 +n03206718 4791 +n03476083 4791 +n03201776 5060 +n02780704 5060 +n03201638 5060 +n03239054 5060 +n02683454 5071 +n04459018 5071 +n04584207 5071 +n03237416 4794 +n02887489 4794 +n02752615 4794 +n03528263 4768 +n03251766 4768 +n04517823 5082 +n03584829 5082 +n04488857 5082 +n03150511 5082 +n04580493 5082 +n04179913 5082 +n04174101 5082 +n03620052 5082 +n03534776 5082 +n04475631 5085 +n04309833 5085 +n03207941 5088 +n04070727 5088 +n04554684 5088 +n03102654 5096 +n03273913 5096 +n03557590 5099 +n03170635 5099 +n04442312 5091 +n03761084 5091 +n04442441 5091 +n03063338 5091 +n03543254 5091 +n04542943 5091 +n03212114 5091 +n03297495 5091 +n04330340 5091 +n03862676 5091 +n03378174 5091 +n03557692 5091 +n03102371 5110 +n03273740 5110 +n03425595 5110 +n04003241 5110 +n02905036 5111 +n04111531 5111 +n03259280 5111 +n03425241 5111 +n03483316 5083 +n03050655 5083 +n04277826 5123 +n04496726 5123 +n04607242 5123 +n02808304 4766 +n03219010 4766 +n04499446 4766 +n02821030 4766 +n03938725 5130 +n04188179 5130 +n04439712 1068 +n03971218 1068 +n03223553 1068 +n02856463 1068 +n03250279 1068 +n03882058 1068 +n03635668 1068 +n02846511 1068 +n04251791 5136 +n04189816 5136 +n02731900 5136 +n04225987 5136 +n04214046 5136 +n04149813 5136 +n04543996 5138 +n03502200 5138 +n03005285 1069 +n03969259 1069 +n04254009 1069 +n04446521 5150 +n04208936 5150 +n04559451 5150 +n03371875 5152 +n03993053 5152 +n04108268 1071 +n03106110 1071 +n03644378 5157 +n02919890 5157 +n04290079 5157 +n03107046 5157 +n04426788 5158 +n02874537 5158 +n04581829 5158 +n03641569 5158 +n03367545 5163 +n04598965 5163 +n04605321 5163 +n00004475 1042 +n00006484 1042 +n12739332 5170 +n00017222 5170 +n00015388 5170 +n01326291 5170 +n11537327 5170 +n00007846 5170 +n12992868 5170 +n00005787 5170 +n12172906 5173 +n13083586 5173 +n13123431 5173 +n11536673 5173 +n11552806 5173 +n13083023 5173 +n13100156 5173 +n12476510 5181 +n11545524 5181 +n11552386 5181 +n13121544 5181 +n12205694 5181 +n13100677 5181 +n13103136 5181 +n13085113 5181 +n13084834 5181 +n13134302 5181 +n13084184 5181 +n12477163 5187 +n12477583 5187 +n12477747 5187 +n12480895 5187 +n12479537 5187 +n12481458 5187 +n11547562 5188 +n11545714 5188 +n13221529 5204 +n13220122 5204 +n13223265 5206 +n13223588 5208 +n13223710 5208 +n12953206 5205 +n13194572 5205 +n13205058 5205 +n12961879 5205 +n12953484 5205 +n13186654 5205 +n13197274 5205 +n13173882 5205 +n13229543 5205 +n13192625 5205 +n13185269 5205 +n13193642 5205 +n13207335 5205 +n13183056 5205 +n13200651 5205 +n13195341 5205 +n13206817 5205 +n13199970 5205 +n12957924 5205 +n13198914 5205 +n13199717 5205 +n13215586 5216 +n13190747 5216 +n13193856 5222 +n13194036 5222 +n11665372 5189 +n11596108 5189 +n12694486 5236 +n11666854 5236 +n11669921 5236 +n11672400 5236 +n12606438 5240 +n12799776 5240 +n11736694 5240 +n12008487 5240 +n11955896 5240 +n12879527 5240 +n12884260 5240 +n12034141 5240 +n12290748 5240 +n12026476 5240 +n12833149 5240 +n11892817 5240 +n12914923 5240 +n11969607 5240 +n11794024 5240 +n12026018 5240 +n11672269 5240 +n12830222 5240 +n11811473 5240 +n12022054 5240 +n11971406 5240 +n11826198 5240 +n12950314 5240 +n11857875 5240 +n11988596 5240 +n11939699 5240 +n11915214 5240 +n11821184 5240 +n12293723 5240 +n11814584 5240 +n11725015 5240 +n12890265 5240 +n11733312 5240 +n11859472 5240 +n11971248 5240 +n11888800 5240 +n11971927 5240 +n12898774 5240 +n11810358 5240 +n11904109 5240 +n11943407 5240 +n11978233 5240 +n12683407 5240 +n12950126 5240 +n11726707 5240 +n11813077 5240 +n11889619 5240 +n11905749 5240 +n11812910 5240 +n11900569 5240 +n12020184 5240 +n11960245 5240 +n11859737 5240 +n12909421 5240 +n12041446 5240 +n12909917 5240 +n11992806 5240 +n11807979 5240 +n11925303 5240 +n11971783 5240 +n11939491 5240 +n11918473 5240 +n11989869 5240 +n11727091 5240 +n11793779 5240 +n11891175 5240 +n11792341 5240 +n11839568 5240 +n11943660 5240 +n11947802 5240 +n12475242 5240 +n11815491 5240 +n12480456 5240 +n11839823 5240 +n11732567 5240 +n12475035 5240 +n12360108 5240 +n12833985 5240 +n11941924 5240 +n11883328 5240 +n11719286 5240 +n11736851 5240 +n11887119 5240 +n12001707 5240 +n11950345 5240 +n11892637 5240 +n11805956 5240 +n11892029 5240 +n11806219 5240 +n12008252 5240 +n11918286 5240 +n11962272 5240 +n12093600 5240 +n12836862 5240 +n12093329 5240 +n11733054 5240 +n12020507 5240 +n11931918 5240 +n11958080 5240 +n12877838 5240 +n11812094 5260 +n11811706 5260 +n11923174 5268 +n12023726 5268 +n12023407 5268 +n11923637 5268 +n11990313 5268 +n11915899 5268 +n12030908 5268 +n12015221 5268 +n11990167 5268 +n11981192 5349 +n11980318 5349 +n11972759 5349 +n11921395 5349 +n12294124 5270 +n12295796 5270 +n12294723 5270 +n12294331 5270 +n12294871 5270 +n12296432 5270 +n12295033 5270 +n11726269 5272 +n11725821 5272 +n11725973 5272 +n12891305 5273 +n12891643 5273 +n11978713 5283 +n11979527 5283 +n11978961 5283 +n11979715 5283 +n12683571 5284 +n12683791 5284 +n11901759 5291 +n11908549 5291 +n11901294 5291 +n11903671 5291 +n11901977 5291 +n11902389 5291 +n11908846 5291 +n11901597 5291 +n11905392 5291 +n11902200 5291 +n11906917 5291 +n12044467 5296 +n12052787 5296 +n12056217 5296 +n12075830 5296 +n12055516 5296 +n12083113 5296 +n12047884 5296 +n12048056 5296 +n12080820 5296 +n12070381 5296 +n12061380 5296 +n12080395 5296 +n12061614 5296 +n12074408 5296 +n12070583 5296 +n12071744 5296 +n12049282 5296 +n12047345 5296 +n12064389 5296 +n12075010 5296 +n12052447 5296 +n12053405 5296 +n12050533 5296 +n12077944 5296 +n12086539 5296 +n12064591 5296 +n12058822 5296 +n12046028 5296 +n12083591 5296 +n12073991 5296 +n12043444 5296 +n12086012 5296 +n12073554 5296 +n12046815 5296 +n12063639 5296 +n12058630 5296 +n12084890 5296 +n12070016 5296 +n12076223 5296 +n12069679 5296 +n12048399 5296 +n12049562 5296 +n12076577 5296 +n12086192 5296 +n12074867 5296 +n12075299 5296 +n12072722 5296 +n12066018 5296 +n12084555 5296 +n12070712 5296 +n12079963 5296 +n12065316 5296 +n12059314 5296 +n12085664 5296 +n12050959 5296 +n12062468 5296 +n12085267 5296 +n12078172 5296 +n12057211 5388 +n12057447 5388 +n12056758 5388 +n12056601 5388 +n12043836 5416 +n12043673 5416 +n12067193 5437 +n12066630 5437 +n12062781 5441 +n12062626 5441 +n11808299 5299 +n11808721 5299 +n11808932 5299 +n11808468 5299 +n11809594 5299 +n11809094 5299 +n11727358 5305 +n11727738 5305 +n11727540 5305 +n11816649 5313 +n11816336 5313 +n11816829 5313 +n11816121 5313 +n11815918 5313 +n11815721 5313 +n12362274 5318 +n12362668 5318 +n12361946 5318 +n11950877 5326 +n11950686 5326 +n11961100 5326 +n12020736 5338 +n12020941 5338 +n11934616 5339 +n11933546 5339 +n11934807 5339 +n12879963 5241 +n12015959 5241 +n11836722 5241 +n11860555 5241 +n12258885 5241 +n11980682 5241 +n12016567 5241 +n11737534 5241 +n11965627 5241 +n11991263 5241 +n11989393 5241 +n12006766 5241 +n12887293 5241 +n12937130 5241 +n12291959 5241 +n11972291 5241 +n11927215 5241 +n12012111 5241 +n11970586 5241 +n11963932 5241 +n11966215 5488 +n11966083 5488 +n12006930 5491 +n12007196 5491 +n11600372 5237 +n11599324 5237 +n11603246 5504 +n11602873 5504 +n11603835 5504 +n11601333 5504 +n12484784 5190 +n12610328 5190 +n11791569 5190 +n11714853 5190 +n13122364 5190 +n11715430 5513 +n11715678 5513 +n12801781 5514 +n11728099 5514 +n11786131 5514 +n12150028 5514 +n12801520 5514 +n11789066 5514 +n11792742 5514 +n12152532 5520 +n12151615 5520 +n12152722 5520 +n11733548 5191 +n11720353 5191 +n12810595 5191 +n12342299 5191 +n13238375 5191 +n12867826 5191 +n12665048 5191 +n11973341 5191 +n12312728 5191 +n11818069 5191 +n12848499 5191 +n11779300 5191 +n12822955 5191 +n12816508 5191 +n12719684 5191 +n12350758 5191 +n12095020 5191 +n11861641 5191 +n11962667 5191 +n12870891 5191 +n12939282 5191 +n12812478 5191 +n12031927 5191 +n12023108 5191 +n12858150 5191 +n12861892 5191 +n12841007 5191 +n12212361 5191 +n12869061 5191 +n12906214 5191 +n12910285 5191 +n12486574 5191 +n12090890 5191 +n12702948 5191 +n12437513 5191 +n11968931 5191 +n11817914 5191 +n11772408 5191 +n12932173 5191 +n12817694 5191 +n11910460 5191 +n12603449 5191 +n12939874 5191 +n12002428 5191 +n12015525 5191 +n11807108 5191 +n12835331 5191 +n12168565 5191 +n12840362 5191 +n12352287 5191 +n11969166 5191 +n11968704 5191 +n12821895 5191 +n12344283 5191 +n11866248 5191 +n11995092 5191 +n12622875 5191 +n11735053 5191 +n12548280 5191 +n13150894 5191 +n12685431 5191 +n12387633 5191 +n12171966 5191 +n12796022 5191 +n12934036 5191 +n12443323 5191 +n12870535 5191 +n12682668 5191 +n12778605 5191 +n12623077 5191 +n12836212 5191 +n11982115 5191 +n12003696 5191 +n12005656 5191 +n12098403 5191 +n12606545 5191 +n11902709 5191 +n12882945 5191 +n12785889 5191 +n11986511 5191 +n12682411 5191 +n12469517 5191 +n12029635 5191 +n12860365 5191 +n12552309 5191 +n11977303 5191 +n11825351 5191 +n12836337 5191 +n12844939 5191 +n12925179 5191 +n11926833 5191 +n12604228 5191 +n11752578 5191 +n12855042 5191 +n11956850 5191 +n12092262 5191 +n12506991 5191 +n12882779 5191 +n11747468 5191 +n12385429 5191 +n12822115 5191 +n12821505 5191 +n12607456 5191 +n12819728 5191 +n12817464 5191 +n12811027 5191 +n12024445 5191 +n12573474 5191 +n12864545 5191 +n11949402 5191 +n11868814 5191 +n11953038 5191 +n12599435 5191 +n12840749 5191 +n13233727 5191 +n12342498 5191 +n12795555 5191 +n11984542 5191 +n12847008 5191 +n12719944 5191 +n11855274 5191 +n12095647 5191 +n12441183 5191 +n12942572 5191 +n12602980 5191 +n12684379 5191 +n12441390 5191 +n12785724 5191 +n11916696 5191 +n12574320 5191 +n12092417 5191 +n12036939 5191 +n11700058 5191 +n12845413 5191 +n11824146 5191 +n11910271 5191 +n11916467 5191 +n11807525 5191 +n12101870 5191 +n11939180 5191 +n12353754 5191 +n12104501 5191 +n12794985 5191 +n12355760 5191 +n12793015 5191 +n12932966 5191 +n12931542 5191 +n12889713 5191 +n12849061 5191 +n11722466 5528 +n11720643 5528 +n12665857 5533 +n12665271 5533 +n11785668 5538 +n11780148 5538 +n11784497 5538 +n11782036 5538 +n11786539 5538 +n11782761 5538 +n12858871 5551 +n12858397 5551 +n11959632 5554 +n11959862 5554 +n12911673 5557 +n12911440 5557 +n12091213 5559 +n12091550 5559 +n12091377 5559 +n12091953 5559 +n12703557 5560 +n12703190 5560 +n12703383 5560 +n12437930 5561 +n12437769 5561 +n12352639 5576 +n12352844 5576 +n12352990 5576 +n12344700 5580 +n12344483 5580 +n12687957 5587 +n12685831 5587 +n12687698 5587 +n12687462 5587 +n12686274 5707 +n12686077 5707 +n12687044 5707 +n12686676 5707 +n12388989 5588 +n12388143 5588 +n12387839 5588 +n12388858 5716 +n12390099 5716 +n12389501 5716 +n12390314 5716 +n12782915 5595 +n12779603 5595 +n12781940 5595 +n12782530 5595 +n11753700 5619 +n11753355 5619 +n11753143 5619 +n12856680 5620 +n12855494 5620 +n12540250 5625 +n12515711 5625 +n12575322 5625 +n12575812 5625 +n12556307 5625 +n12539306 5625 +n12557681 5734 +n12558425 5734 +n12866162 5635 +n12865824 5635 +n12865037 5635 +n12866635 5635 +n12865562 5635 +n12866002 5635 +n11879054 5637 +n11878283 5637 +n11875691 5637 +n11876634 5637 +n11877193 5637 +n11876803 5637 +n11876432 5637 +n11870418 5637 +n11875938 5637 +n11894327 5637 +n11881742 5637 +n11870747 5637 +n11896722 5745 +n11879722 5745 +n11895092 5753 +n11894770 5753 +n11882074 5754 +n11882426 5754 +n13235503 5641 +n13234678 5641 +n12039317 5658 +n12037691 5658 +n12038406 5658 +n12038585 5658 +n12148757 5665 +n12102133 5665 +n12121610 5769 +n12139575 5769 +n12113195 5769 +n12112918 5769 +n12116429 5769 +n12141495 5769 +n12133462 5769 +n12108871 5769 +n12104238 5769 +n12141167 5769 +n12115180 5769 +n12112008 5769 +n12128071 5769 +n12146311 5769 +n12124627 5769 +n12110778 5769 +n12129134 5769 +n12134025 5775 +n12145477 5775 +n12142085 5775 +n12135898 5775 +n12137120 5790 +n12127030 5790 +n12127768 5792 +n12127460 5792 +n12356023 5670 +n12357485 5670 +n12793494 5671 +n12794135 5671 +n12849279 5675 +n12849416 5675 +n12847374 5192 +n12517642 5192 +n11731659 5192 +n12813189 5192 +n11838916 5192 +n12517445 5192 +n12513172 5192 +n12823859 5192 +n12566954 5192 +n13148208 5192 +n12158798 5192 +n12485981 5192 +n13237188 5192 +n12826516 5192 +n13120211 5192 +n12580654 5192 +n11769621 5192 +n12824053 5192 +n11769803 5192 +n12383402 5192 +n12823717 5192 +n12157769 5192 +n13144794 5192 +n12371439 5192 +n12159055 5811 +n12160490 5811 +n12158443 5811 +n12160303 5825 +n12159388 5825 +n12160857 5826 +n12161969 5826 +n12827270 5814 +n12828791 5814 +n12827537 5814 +n11788727 5815 +n11789589 5815 +n12571781 5815 +n11792029 5815 +n12384839 5820 +n12384227 5820 +n12384037 5820 +n12164363 5822 +n12166128 5822 +n12165170 5842 +n12164881 5842 +n12164656 5842 +n13146583 5823 +n13145040 5823 +n12509476 5193 +n13112664 5193 +n13104059 5193 +n12655869 5193 +n12546183 5193 +n12671651 5850 +n12215579 5850 +n12901724 5850 +n12938193 5850 +n12680864 5850 +n12329260 5850 +n12924623 5850 +n12659356 5850 +n12788201 5850 +n12343480 5850 +n13142504 5850 +n11830906 5850 +n12504783 5850 +n12659539 5850 +n12214789 5850 +n11699442 5850 +n12217453 5850 +n12574866 5850 +n12374418 5850 +n12249542 5850 +n13118707 5850 +n12215022 5850 +n12342852 5850 +n12762896 5850 +n12306717 5850 +n11769176 5850 +n12805146 5850 +n12519089 5850 +n11754893 5850 +n12772908 5850 +n12624381 5850 +n12482031 5850 +n12243109 5850 +n12223764 5850 +n12170585 5850 +n12230794 5850 +n12791329 5850 +n12674120 5850 +n12917901 5850 +n12237486 5850 +n12185859 5850 +n12681893 5850 +n12905412 5850 +n12899537 5850 +n12899752 5850 +n12806015 5850 +n12011620 5850 +n12922763 5850 +n12651229 5850 +n12303083 5850 +n11928352 5850 +n11926365 5850 +n12223569 5850 +n12791064 5850 +n12311579 5850 +n11834654 5850 +n11760785 5850 +n12749679 5850 +n12489815 5850 +n12666965 5850 +n12929403 5850 +n12902662 5850 +n12620196 5850 +n12237641 5850 +n12625383 5850 +n12244153 5850 +n11774513 5850 +n12520864 5850 +n12516828 5850 +n12849717 5850 +n12485653 5850 +n12790430 5862 +n12788854 5862 +n11924445 5874 +n12632335 5874 +n11947251 5874 +n12099342 5874 +n11931540 5874 +n12545635 5874 +n11778257 5874 +n11924849 5874 +n12367611 5874 +n12602262 5874 +n12328567 5874 +n12328398 5874 +n12629305 5874 +n11907689 5874 +n11940006 5874 +n12546962 5874 +n11925898 5874 +n11947629 5929 +n11948864 5929 +n11948264 5929 +n12368451 5935 +n12369309 5935 +n12368028 5935 +n12307240 5878 +n12307076 5878 +n12483427 5885 +n12483625 5885 +n12482893 5885 +n12483841 5885 +n12173664 5888 +n12173912 5888 +n12171316 5888 +n12174521 5888 +n12171098 5888 +n12177844 5888 +n12174311 5888 +n12178896 5961 +n12179122 5961 +n12676534 5891 +n12676703 5891 +n12675876 5891 +n12920204 5892 +n12921868 5892 +n12621410 5916 +n12622297 5916 +n12245319 5919 +n12244650 5919 +n12244819 5919 +n12521394 5921 +n12530818 5921 +n12849952 5923 +n12850336 5923 +n12850168 5923 +n12495146 5851 +n12570972 5851 +n12196129 5851 +n13107694 5851 +n12202936 5851 +n13111881 5851 +n13103877 5851 +n12409231 5851 +n12765115 5851 +n12265600 5851 +n12409470 5851 +n12713866 5851 +n12281241 5851 +n11709205 5851 +n12189429 5851 +n12562785 5851 +n12284821 5851 +n12401335 5851 +n12570394 5851 +n11759224 5851 +n12286988 5851 +n12491826 5851 +n12527738 5851 +n12696492 5851 +n12325234 5851 +n12198286 5851 +n12330891 5851 +n11650558 5851 +n12405714 5851 +n12284262 5851 +n12714755 5851 +n13109733 5851 +n12262553 5851 +n12506341 5851 +n12303462 5851 +n12260799 5851 +n12302071 5851 +n12492106 5851 +n11762433 5851 +n12582231 5851 +n12774299 5851 +n13108481 5851 +n12267411 5851 +n11756092 5851 +n12662772 5851 +n13108662 5851 +n12528549 5851 +n12690653 5851 +n12180885 5851 +n13108545 5851 +n13108323 5851 +n12334293 5851 +n12670758 5851 +n12286826 5851 +n12724942 5851 +n12155009 5851 +n12570703 5851 +n12523475 5851 +n12154773 5851 +n12915811 5851 +n12268246 5851 +n13108131 5851 +n12806732 5851 +n12524188 5851 +n11758799 5851 +n12496427 5851 +n12568186 5980 +n12495895 5980 +n12196527 5982 +n12196336 5982 +n12196694 5982 +n12203529 5984 +n12204175 5984 +n12282933 5992 +n12282527 5992 +n12283542 5992 +n12282737 5992 +n12282235 5992 +n12402051 5997 +n12402840 5997 +n12401684 5997 +n12402348 5997 +n12402596 5997 +n11759853 5999 +n11759404 5999 +n12406715 6008 +n12406488 6008 +n12407890 6008 +n12406902 6008 +n12330469 6011 +n12345899 6011 +n11709674 6011 +n12329473 6011 +n12200143 6011 +n11712282 6011 +n12752205 6011 +n13110915 6011 +n12513933 6011 +n12189987 6011 +n12731401 6011 +n12717224 6011 +n12717072 6011 +n12946849 6011 +n12756457 6011 +n12201580 6011 +n11703669 6011 +n12491017 6011 +n12190410 6011 +n12242409 6011 +n07754894 6011 +n12818346 6011 +n12658308 6011 +n12658118 6011 +n12494794 6011 +n12317296 6011 +n12651821 6011 +n11711764 6071 +n11710136 6071 +n11711537 6071 +n11710393 6071 +n12755225 6075 +n12753573 6075 +n12754648 6075 +n12754781 6075 +n12755727 6075 +n12754981 6075 +n12755387 6075 +n12753007 6075 +n12753245 6075 +n12754003 6075 +n12759273 6076 +n12318378 6076 +n12288823 6076 +n12319204 6111 +n12319414 6111 +n12732491 6079 +n12733647 6079 +n12732756 6079 +n12732009 6079 +n12733870 6079 +n12732966 6117 +n12733218 6117 +n12948495 6082 +n12948251 6082 +n12948053 6082 +n12947313 6082 +n12757303 6083 +n12757458 6083 +n11704093 6085 +n11705171 6085 +n12707781 6095 +n12399132 6095 +n12400720 6095 +n12345280 6095 +n11695599 6095 +n12771192 6095 +n12704343 6095 +n12638218 6095 +n12644902 6095 +n12190869 6095 +n12373100 6095 +n12300840 6095 +n12743352 6095 +n12651611 6095 +n12629666 6095 +n12636224 6095 +n12648045 6095 +n12399384 6095 +n12301180 6095 +n12744387 6095 +n12640839 6095 +n12745386 6095 +n12633638 6095 +n12771390 6095 +n12761284 6095 +n12400489 6095 +n12333530 6095 +n12333771 6095 +n12333053 6095 +n12641413 6095 +n12332030 6095 +n12711984 6130 +n12709901 6130 +n12708293 6130 +n12713063 6130 +n12711596 6130 +n12709103 6130 +n12709688 6130 +n12710415 6162 +n12710295 6162 +n12710693 6163 +n12708654 6163 +n12708941 6163 +n12643313 6137 +n12638753 6137 +n12646740 6138 +n12645174 6138 +n12650379 6138 +n12634429 6152 +n12633994 6152 +n12634211 6152 +n12635532 6152 +n12635955 6180 +n12635744 6180 +n12643473 6159 +n12649065 6159 +n12641931 6159 +n12642200 6159 +n12650556 6159 +n12649539 6185 +n12649317 6185 +n12646605 6185 +n12647560 6186 +n12648888 6186 +n12263987 6012 +n12263038 6012 +n12306089 6014 +n12305986 6014 +n12305293 6014 +n12304703 6014 +n12305475 6014 +n12262018 6015 +n12261808 6015 +n12261571 6015 +n12595699 6019 +n12587132 6019 +n12583126 6019 +n12596709 6019 +n12591351 6019 +n12596849 6019 +n12582665 6019 +n12596148 6019 +n12595964 6019 +n12582846 6019 +n12587803 6019 +n12591017 6019 +n12588320 6206 +n12588780 6206 +n12585629 6206 +n12597134 6206 +n12598027 6206 +n12597466 6206 +n12583401 6206 +n12593994 6213 +n12590232 6213 +n11757653 6023 +n11756669 6023 +n11757851 6023 +n11664418 6025 +n13108841 6025 +n11647703 6229 +n11628793 6229 +n11658331 6229 +n11623105 6229 +n11630017 6229 +n11628456 6229 +n11658544 6229 +n11643835 6229 +n11624531 6229 +n11661372 6229 +n11645914 6229 +n11630489 6229 +n11640132 6229 +n11608250 6229 +n11620673 6229 +n11618861 6229 +n11627168 6229 +n11623815 6233 +n11624192 6233 +n11623967 6233 +n11635152 6234 +n11634736 6234 +n11635433 6234 +n11636204 6234 +n11644462 6237 +n11644226 6237 +n11644046 6237 +n11626585 6238 +n11625632 6238 +n11625003 6238 +n11626826 6238 +n11625804 6238 +n11626152 6238 +n11626409 6238 +n11646694 6240 +n11646167 6240 +n11632167 6241 +n11631854 6241 +n11632619 6241 +n11616662 6243 +n11611561 6243 +n11611356 6243 +n11617631 6243 +n11612575 6243 +n11611758 6243 +n11614713 6243 +n11615387 6243 +n11612018 6243 +n11611087 6243 +n11612923 6243 +n11616486 6243 +n11618290 6243 +n11612349 6243 +n11611233 6243 +n11617090 6243 +n11614250 6243 +n11618525 6243 +n11615026 6243 +n11617272 6243 +n11614039 6279 +n11613459 6279 +n11615967 6285 +n11614420 6285 +n11621029 6244 +n11622184 6293 +n11622591 6293 +n11621281 6293 +n11622368 6293 +n11621950 6293 +n11621547 6293 +n11621727 6293 +n11619455 6245 +n11619227 6245 +n11627512 6246 +n11628087 6246 +n11627908 6246 +n12691661 6027 +n12691428 6027 +n12316572 6031 +n12334891 6031 +n12340755 6031 +n12316444 6031 +n12336727 6309 +n12338796 6309 +n12338454 6309 +n12336973 6309 +n12336092 6309 +n12336224 6309 +n12337617 6309 +n12725521 6034 +n12727101 6034 +n12729521 6034 +n12726670 6034 +n12729315 6034 +n12729729 6319 +n12731029 6319 +n12270741 6040 +n12271643 6040 +n12278650 6040 +n12279458 6040 +n12269241 6040 +n12275489 6040 +n12273114 6040 +n12276872 6040 +n12278371 6040 +n12272883 6040 +n12269652 6040 +n12273768 6040 +n12277800 6327 +n12271933 6327 +n12279772 6330 +n12270946 6330 +n12269406 6330 +n12275675 6331 +n12276628 6331 +n12275131 6331 +n12274358 6336 +n12272239 6336 +n12277578 6336 +n12501202 6041 +n12814643 6041 +n12493208 6041 +n12807773 6042 +n12807409 6042 +n12807251 6042 +n11758122 6043 +n12915568 6043 +n12656369 5852 +n12656685 5852 +n12547215 5853 +n12547503 5853 +n11944196 5194 +n11984144 5194 +n11805544 5194 +n11874081 5194 +n11965218 5194 +n12392549 5194 +n11956348 5194 +n11945514 6361 +n11944954 6361 +n11998888 6361 +n11953884 6361 +n11954345 6361 +n11955153 6371 +n11954161 6371 +n12421137 5196 +n12421467 5196 +n12411461 5196 +n12451915 5196 +n12425281 5196 +n12459629 5196 +n12421683 6376 +n12422129 6376 +n12421917 6376 +n12411922 6377 +n12418221 6377 +n12416073 6377 +n12413165 6384 +n12414932 6384 +n12412606 6384 +n12412355 6384 +n12414035 6384 +n12413880 6384 +n12453186 6378 +n12452836 6378 +n12450344 6379 +n12426248 6379 +n12429352 6379 +n12460697 6379 +n12449526 6379 +n12473840 6379 +n12458550 6379 +n12449296 6379 +n12472024 6379 +n12457091 6379 +n12465557 6379 +n12461466 6379 +n12454159 6379 +n12431434 6379 +n12451240 6395 +n12451399 6395 +n12450840 6395 +n12428076 6396 +n12428747 6396 +n12427566 6396 +n12427184 6396 +n12426623 6396 +n12427757 6396 +n12461109 6398 +n12460957 6398 +n12454705 6407 +n12454949 6407 +n12435777 6408 +n12435649 6408 +n11819509 5197 +n11819912 5197 +n11842204 5197 +n11852028 6426 +n11851258 6426 +n11847169 6426 +n11853813 6426 +n11848479 6426 +n11844892 6426 +n11851839 6426 +n11845557 6426 +n11849871 6426 +n11849983 6426 +n11851578 6426 +n11854479 6426 +n11844371 6426 +n11853356 6426 +n11845793 6434 +n11845913 6434 +n11784126 5185 +n11783920 5185 +n12832315 5185 +n11723770 5186 +n11724109 5186 +n12766869 5186 +n12455950 5186 +n11723227 5186 +n12757816 5186 +n11773987 5186 +n12766595 5186 +n01324610 5174 +n02153109 5174 +n01323599 5174 +n01314781 5174 +n01321579 5174 +n01317541 5174 +n01318894 5174 +n01314663 5174 +n02311060 5174 +n01317916 5174 +n01321230 5174 +n01314388 5174 +n02075612 5174 +n02152740 5174 +n01466257 5174 +n01316949 5174 +n01905661 5174 +n01320872 5174 +n01319467 5174 +n01316422 5174 +n02157206 5174 +n10300303 5174 +n02152881 5174 +n01324431 5174 +n01321854 6458 +n01321770 6458 +n01956344 6458 +n01613615 6458 +n01318279 6458 +n02376542 6478 +n02122948 6478 +n01888045 6478 +n01322343 6478 +n01887896 6478 +n02412440 6478 +n01322221 6478 +n01322604 6478 +n01323261 6478 +n01322685 6478 +n02395694 6478 +n01504344 6481 +n01504179 6481 +n01318381 6459 +n02122580 6459 +n01317813 6459 +n02469472 6462 +n02309337 6462 +n02311617 6462 +n02264232 6462 +n02299157 6500 +n02310585 6500 +n02299505 6500 +n02302620 6500 +n02295390 6500 +n02310717 6500 +n02288268 6500 +n02297442 6500 +n02300797 6500 +n02285801 6500 +n02307325 6500 +n02376791 6464 +n02377063 6464 +n01323355 6464 +n01469103 6468 +n01468712 6468 +n01471682 6468 +n01473806 6519 +n01627424 6519 +n01861778 6519 +n09828216 6519 +n01459791 6519 +n02156871 6519 +n01661091 6519 +n01503061 6519 +n02512053 6520 +n01477525 6520 +n02528163 6528 +n02512938 6528 +n01482071 6528 +n02638596 6530 +n01457852 6530 +n01455778 6530 +n01456756 6530 +n02552171 6530 +n01428580 6530 +n02549989 6530 +n02640857 6533 +n02641379 6533 +n02639087 6533 +n02639605 6533 +n02640242 6533 +n02554730 6537 +n02618827 6537 +n02549248 6537 +n02603317 6537 +n01451426 6537 +n02548247 6537 +n02642107 6537 +n02657368 6537 +n02603540 6537 +n02652668 6537 +n02560110 6545 +n02556846 6545 +n02555863 6545 +n02581957 6545 +n02564270 6545 +n02623445 6545 +n02565573 6545 +n02610664 6545 +n02590702 6545 +n02588286 6545 +n02620167 6545 +n02573704 6545 +n02576223 6545 +n02606384 6545 +n02605316 6545 +n02619550 6545 +n02561108 6545 +n02619165 6545 +n02610066 6545 +n02562315 6545 +n02586543 6545 +n02593019 6545 +n02594250 6545 +n02616851 6545 +n02585872 6545 +n02607862 6545 +n02557182 6556 +n02557318 6556 +n02557749 6556 +n02624167 6560 +n02628062 6560 +n02631475 6560 +n02630281 6560 +n02631041 6560 +n02629230 6560 +n02626762 6560 +n02625258 6584 +n02625612 6584 +n02624807 6584 +n02626265 6592 +n02625851 6592 +n02627292 6590 +n02627532 6590 +n02576575 6567 +n02579928 6567 +n02580336 6567 +n02576906 6598 +n02579303 6598 +n02578771 6598 +n02578928 6598 +n02580679 6600 +n02580830 6600 +n02607201 6568 +n02607470 6568 +n02607072 6568 +n02605703 6569 +n02606052 6569 +n02605936 6569 +n02561381 6571 +n02561661 6571 +n02561514 6571 +n02564720 6574 +n02563648 6574 +n02563182 6574 +n02563792 6574 +n02562796 6574 +n02565072 6616 +n02565324 6616 +n02599052 6577 +n02596381 6577 +n02597608 6577 +n02596067 6577 +n02595702 6577 +n02598573 6624 +n02598878 6624 +n02642644 6551 +n02649546 6551 +n02643112 6630 +n02643566 6630 +n02643836 6630 +n02644113 6630 +n02658531 6552 +n02657694 6552 +n02660208 6552 +n02654745 6554 +n02654425 6554 +n02656670 6554 +n02655020 6554 +n02655523 6554 +n02653145 6554 +n02656032 6643 +n02655848 6643 +n02541687 6538 +n02542432 6538 +n02524202 6538 +n02533834 6538 +n02543565 6538 +n02517442 6538 +n01438208 6538 +n02526121 6538 +n02529772 6538 +n02518324 6652 +n02520147 6652 +n02519686 6652 +n02519862 6652 +n02583567 6653 +n01444339 6653 +n01446589 6653 +n01438581 6653 +n01439121 6653 +n01448951 6653 +n02584449 6660 +n02584145 6660 +n02583890 6660 +n01446760 6662 +n01447331 6662 +n01448594 6662 +n01448291 6662 +n01439514 6664 +n01442972 6664 +n01440764 6664 +n01443831 6664 +n01443537 6664 +n01443243 6664 +n01449712 6665 +n01449374 6665 +n02527622 6654 +n02527057 6654 +n02527271 6654 +n02532602 6655 +n02533209 6655 +n02566834 6531 +n02537085 6531 +n02534734 6531 +n02514041 6531 +n02568959 6686 +n02568087 6686 +n02570164 6690 +n02569484 6690 +n02537716 6687 +n02538216 6687 +n02537525 6687 +n02537319 6687 +n02538010 6687 +n02536456 6688 +n02535537 6688 +n02535258 6688 +n02536864 6688 +n02535759 6688 +n01482330 6532 +n01495701 6532 +n01487506 6704 +n01495493 6704 +n01486838 6704 +n01488918 6704 +n01492357 6704 +n01494475 6704 +n01483522 6704 +n01488038 6704 +n01489501 6709 +n01491006 6709 +n01489709 6709 +n01489920 6709 +n01490112 6709 +n01491361 6709 +n01490670 6709 +n01493146 6710 +n01492569 6710 +n01484850 6712 +n01484097 6712 +n01483830 6712 +n01498041 6705 +n01496331 6705 +n01499396 6705 +n01500476 6705 +n01500091 6705 +n01501160 6705 +n01498989 6705 +n01629276 6521 +n01639765 6521 +n01629962 6733 +n01630284 6733 +n01629819 6733 +n01637615 6733 +n01632047 6733 +n01631663 6736 +n01630670 6736 +n01630901 6736 +n01632458 6739 +n01632777 6739 +n01632601 6739 +n01645776 6734 +n01640846 6734 +n01644900 6734 +n01643896 6734 +n01650167 6734 +n01644373 6734 +n01646648 6746 +n01646902 6746 +n01646292 6746 +n01646802 6746 +n01646388 6746 +n01647640 6746 +n01646555 6746 +n01642539 6747 +n01641206 6747 +n01641577 6747 +n01641391 6747 +n01642257 6747 +n01641739 6747 +n01650690 6750 +n01652026 6750 +n01886756 6522 +n01871265 6522 +n01871875 6522 +n01874434 6522 +n01862399 6522 +n02082791 6767 +n01887474 6767 +n01889074 6767 +n02372584 6767 +n01888411 6767 +n02453611 6767 +n02430559 6767 +n01887623 6767 +n02469914 6767 +n02075296 6767 +n02139199 6767 +n02062017 6767 +n02323449 6767 +n02372952 6767 +n01888181 6767 +n02329401 6767 +n01887787 6767 +n02453108 6767 +n01888264 6767 +n02461830 6767 +n02370806 6767 +n01891633 6774 +n01893825 6774 +n02454794 6777 +n02456962 6777 +n02454379 6777 +n02460009 6777 +n02458135 6796 +n02457945 6796 +n02457408 6796 +n02460451 6798 +n02461128 6798 +n02470238 6780 +n02501583 6780 +n02472293 6780 +n02470325 6780 +n02496913 6780 +n02484322 6780 +n02475669 6806 +n02474777 6806 +n02475078 6806 +n02470899 6807 +n02483092 6813 +n02480153 6813 +n02483708 6814 +n02483362 6814 +n02481823 6815 +n02480495 6815 +n02480855 6815 +n02482650 6818 +n02482474 6818 +n02481103 6820 +n02481366 6820 +n02481500 6820 +n02500267 6808 +n02497673 6808 +n02499316 6808 +n02499808 6808 +n02499022 6808 +n02484473 6809 +n02489589 6809 +n02486410 6831 +n02485536 6831 +n02489166 6831 +n02488702 6831 +n02486261 6831 +n02487347 6831 +n02484975 6831 +n02488291 6831 +n02486657 6833 +n02486908 6833 +n02487847 6838 +n02487547 6838 +n02493793 6832 +n02490219 6832 +n02494079 6832 +n02493509 6832 +n02492035 6832 +n02492660 6832 +n02491107 6846 +n02490811 6846 +n02507649 6781 +n02120997 6781 +n02134971 6781 +n02083346 6781 +n02441326 6781 +n02131653 6781 +n02509515 6853 +n02508213 6853 +n02509815 6853 +n02508021 6853 +n02509197 6853 +n02510455 6853 +n02127808 6854 +n02121620 6854 +n02128925 6865 +n02129604 6865 +n02128385 6865 +n02130308 6865 +n02129165 6865 +n02128757 6865 +n02129923 6868 +n02129837 6868 +n01323068 6868 +n02129463 6871 +n01322898 6871 +n02121808 6866 +n02124623 6866 +n02122878 6878 +n02123159 6878 +n02123045 6878 +n02123242 6878 +n02124484 6878 +n02124075 6878 +n02124313 6878 +n02122298 6878 +n02123478 6878 +n02123394 6878 +n02123917 6878 +n02123597 6878 +n02122510 6878 +n02122725 6878 +n02122430 6878 +n02126640 6879 +n02125494 6879 +n02127052 6879 +n02125311 6879 +n02125081 6879 +n02126139 6879 +n02126787 6879 +n02125010 6879 +n02127292 6897 +n02127482 6897 +n02127678 6897 +n02127381 6897 +n02138441 6855 +n02137015 6855 +n02137549 6855 +n02138647 6907 +n02138777 6907 +n02084071 6856 +n02115335 6856 +n02114100 6856 +n02083672 6856 +n02115096 6856 +n02118333 6856 +n02117135 6856 +n02110958 6912 +n02112826 6912 +n02111500 6912 +n02112706 6912 +n02113335 6912 +n02084861 6912 +n02111129 6912 +n02112497 6912 +n02110341 6912 +n02084732 6912 +n02111626 6912 +n02085374 6912 +n02087122 6912 +n02103406 6912 +n02110806 6912 +n02113978 6912 +n02111277 6912 +n02085272 6912 +n02113186 6920 +n02113023 6920 +n02113799 6923 +n02113624 6923 +n02113712 6923 +n02112018 6929 +n02112350 6929 +n02112137 6929 +n02111889 6929 +n02086346 6930 +n02086240 6930 +n02087046 6930 +n02085936 6930 +n02085782 6930 +n02085620 6930 +n02086079 6930 +n02086753 6946 +n02086646 6946 +n02086910 6946 +n02092468 6931 +n02087394 6931 +n02089468 6931 +n02098550 6931 +n02087551 6931 +n02089232 6931 +n02096437 6956 +n02096756 6956 +n02095412 6956 +n02096051 6956 +n02098286 6956 +n02093859 6956 +n02094114 6956 +n02093754 6956 +n02094433 6956 +n02095314 6956 +n02093647 6956 +n02097474 6956 +n02097658 6956 +n02098413 6956 +n02097298 6956 +n02096177 6956 +n02096585 6956 +n02095050 6956 +n02096294 6956 +n02093056 6956 +n02094258 6956 +n02093991 6956 +n02094562 6956 +n02098105 6956 +n02097209 6963 +n02097130 6963 +n02097047 6963 +n02095570 6964 +n02095727 6964 +n02095889 6964 +n02093256 6981 +n02093428 6981 +n02094721 6984 +n02094931 6984 +n02098906 6959 +n02099997 6959 +n02098806 6959 +n02100399 6959 +n02101108 6959 +n02099029 6959 +n02100583 6997 +n02100236 6997 +n02101006 6999 +n02100735 6999 +n02100877 6999 +n02102318 7000 +n02102605 7000 +n02101861 7000 +n02101388 7000 +n02101556 7000 +n02102480 7000 +n02102973 7000 +n02102040 7009 +n02102177 7009 +n02099267 7001 +n02099601 7001 +n02099429 7001 +n02099849 7001 +n02099712 7001 +n02091635 6960 +n02088466 6960 +n02090475 6960 +n02088238 6960 +n02091244 6960 +n02091467 6960 +n02088839 6960 +n02091831 6960 +n02088094 6960 +n02089078 6960 +n02088632 6960 +n02092002 6960 +n02090379 6960 +n02089555 6960 +n02088364 6960 +n02092339 6960 +n02090827 6960 +n02090622 7023 +n02090721 7023 +n02089973 7034 +n02089867 7034 +n02091134 7037 +n02091032 7037 +n02109047 6932 +n02103841 6932 +n02109961 6932 +n02108551 6932 +n02109811 6932 +n02109525 6932 +n02108915 6932 +n02106854 6932 +n02108672 6932 +n02107420 6932 +n02108422 6932 +n02104523 6932 +n02108089 6932 +n02108254 6932 +n02104029 7045 +n02104280 7045 +n02106966 7045 +n02104365 7045 +n02107142 7060 +n02107312 7060 +n02110627 7060 +n02110185 7048 +n02110063 7048 +n02107574 7053 +n02108000 7053 +n02107683 7053 +n02107908 7053 +n02104882 7055 +n02105412 7055 +n02105855 7055 +n02105505 7055 +n02106166 7055 +n02106030 7055 +n02106550 7055 +n02105641 7055 +n02106662 7055 +n02105251 7055 +n02106382 7055 +n02105056 7071 +n02105162 7071 +n02116738 6913 +n02115641 6913 +n02115913 6913 +n02114855 6914 +n01322508 6914 +n02114712 6914 +n02114548 6914 +n02114367 6914 +n02119022 6917 +n02119477 6917 +n02119789 6917 +n02120079 6917 +n02120505 6917 +n02119634 6917 +n02117900 6918 +n02117512 6918 +n02442845 6857 +n02443484 6857 +n02446206 6857 +n02450295 6857 +n02445394 6857 +n02444819 6857 +n02441942 6857 +n02443114 6857 +n02449350 6857 +n02445715 6857 +n02447366 6857 +n02443346 6857 +n02445004 7105 +n02445171 7105 +n02134084 6858 +n02133161 6858 +n01322983 6858 +n02133704 6858 +n02132136 6858 +n02134418 6858 +n02132580 7118 +n02132788 7118 +n02141306 6782 +n02140049 6782 +n02139671 6782 +n02146371 7122 +n02145424 7122 +n02147591 7126 +n02147947 7126 +n02062430 6783 +n02073250 6783 +n02075927 6783 +n02062744 7129 +n02066707 7132 +n02063224 7132 +n02068974 7133 +n02068541 7133 +n02070430 7135 +n02069412 7135 +n02069701 7135 +n02071636 7135 +n02071294 7135 +n02072798 7135 +n02070174 7139 +n02069974 7139 +n02066245 7134 +n02064338 7134 +n02064816 7134 +n02065407 7146 +n02065026 7146 +n02073831 7130 +n02074367 7130 +n02081571 7131 +n02076196 7131 +n02079389 7153 +n02076779 7153 +n02080415 7154 +n02079851 7154 +n02080146 7154 +n02077658 7155 +n02077152 7155 +n02077923 7155 +n02078574 7161 +n02078738 7161 +n02079005 7161 +n02328429 6784 +n02323902 6784 +n02324045 7166 +n02326432 7166 +n02325722 7167 +n02325366 7167 +n02324587 7167 +n02324850 7167 +n02324514 7167 +n02328150 7167 +n02324431 7167 +n02327842 7168 +n02326862 7168 +n02327028 7168 +n02367492 6787 +n02331046 6787 +n02365480 6787 +n02343320 6787 +n02341974 6787 +n02346627 6787 +n02366959 6787 +n02339376 6787 +n02363005 6787 +n02342885 6787 +n02359324 6787 +n02355227 6787 +n02361337 6787 +n02359556 6787 +n02364520 6787 +n02343772 6787 +n02330245 6787 +n02338145 6787 +n02353861 7180 +n02333546 7180 +n02333909 7180 +n02360282 7190 +n02358091 7190 +n02359915 7190 +n02355477 7190 +n02358890 7201 +n02358390 7201 +n02356381 7203 +n02357111 7203 +n02356977 7203 +n02357401 7203 +n02356798 7203 +n02361706 7191 +n02361587 7191 +n02364840 7193 +n02364673 7193 +n02332755 7195 +n02332156 7195 +n02503517 6789 +n02504458 7217 +n02504013 7217 +n02394477 6792 +n02373336 6792 +n02399000 7220 +n02437136 7220 +n02395003 7220 +n02437616 7220 +n02438580 7220 +n02397744 7220 +n02398521 7220 +n02397529 7220 +n02429456 7222 +n02430045 7222 +n02401031 7222 +n02439033 7222 +n02439398 7222 +n02434190 7231 +n02433925 7231 +n02433318 7231 +n02432983 7231 +n02431337 7231 +n02432511 7231 +n02430830 7231 +n02431122 7231 +n02434954 7231 +n02432291 7231 +n02431785 7231 +n02431976 7231 +n02433546 7231 +n02432704 7231 +n02414578 7232 +n02410509 7232 +n02411206 7232 +n02407959 7232 +n02402010 7232 +n02419796 7232 +n02411705 7232 +n02418064 7232 +n02416519 7232 +n02416104 7249 +n02415435 7249 +n02415253 7249 +n02415577 7259 +n02415829 7259 +n02410702 7250 +n02410900 7250 +n02408817 7252 +n02408429 7252 +n02409508 7252 +n02404573 7253 +n02402175 7253 +n02404906 7253 +n02402425 7253 +n02405302 7269 +n02410011 7269 +n02404186 7271 +n02403003 7271 +n02403325 7271 +n02403231 7271 +n02403740 7271 +n02403454 7271 +n02406174 7271 +n02404432 7274 +n02406647 7274 +n02407625 7274 +n02407071 7274 +n02405929 7274 +n02407276 7274 +n02407390 7280 +n02406533 7280 +n02424305 7254 +n02421136 7254 +n02420509 7254 +n02427724 7254 +n02426813 7254 +n02426481 7254 +n02421792 7254 +n02421449 7254 +n02424695 7254 +n02420828 7254 +n02422391 7254 +n02422699 7254 +n02424486 7254 +n02425887 7254 +n02422106 7254 +n02424085 7254 +n02428508 7254 +n02428349 7254 +n02423022 7254 +n02424909 7297 +n02425228 7297 +n02423218 7307 +n02423589 7307 +n02413131 7255 +n02413050 7255 +n02411999 7255 +n02412210 7255 +n02412080 7255 +n02418465 7256 +n02419336 7256 +n02419634 7256 +n02416964 7257 +n02416820 7257 +n02417914 7257 +n02417387 7257 +n02417070 7257 +n02416880 7257 +n02417534 7257 +n02437482 7223 +n02437312 7223 +n02396427 7224 +n02397096 7224 +n02396014 7224 +n02395406 7224 +n02438173 7225 +n02438272 7225 +n02391994 7221 +n02393580 7221 +n02374149 7221 +n02393940 7221 +n02392434 7335 +n02393161 7335 +n02392824 7335 +n02374451 7337 +n02391049 7337 +n02389346 7337 +n02388917 7342 +n02377603 7342 +n02382948 7342 +n02389128 7342 +n02381460 7342 +n02389261 7342 +n02382204 7342 +n02375302 7342 +n02376918 7342 +n02387722 7342 +n02388832 7342 +n02381609 7342 +n02377703 7342 +n02388735 7342 +n02386014 7342 +n02380464 7342 +n02386310 7342 +n02377480 7342 +n02380335 7342 +n02382437 7342 +n02389026 7342 +n02385214 7347 +n02383231 7347 +n02388276 7347 +n02377291 7353 +n02377181 7353 +n02377388 7353 +n02379430 7357 +n02378969 7357 +n02378541 7357 +n02381364 7357 +n02379329 7357 +n02381004 7357 +n02381261 7357 +n02379908 7357 +n02379183 7357 +n02386141 7359 +n02386224 7359 +n02382338 7361 +n02387254 7361 +n02386496 7361 +n02386853 7385 +n02387093 7385 +n02386968 7385 +n02387346 7385 +n02382039 7363 +n02380745 7363 +n02380583 7363 +n02382750 7364 +n02382635 7364 +n02382850 7364 +n02391234 7343 +n02391373 7343 +n02391508 7343 +n02390015 7344 +n02389779 7344 +n02389559 7344 +n01872401 6769 +n01873310 6769 +n01872772 6769 +n01877134 6770 +n01882714 6770 +n01883070 6770 +n01875313 6770 +n01874928 6770 +n01883513 6770 +n01881171 6770 +n01877606 7405 +n01877812 7405 +n01878929 7413 +n01879509 7413 +n01884834 7410 +n01885498 7410 +n01662622 6526 +n01661818 6526 +n01662784 7418 +n01669372 7420 +n01669191 7420 +n01666228 7420 +n01667778 7420 +n01672032 7420 +n01669654 7420 +n01663401 7420 +n01665932 7420 +n01668665 7420 +n01670092 7420 +n01667114 7420 +n01668892 7420 +n01664990 7427 +n01664065 7427 +n01663782 7427 +n01665541 7427 +n01664369 7427 +n01664674 7437 +n01664492 7437 +n01670802 7430 +n01671125 7430 +n01670535 7430 +n01671479 7430 +n01696633 7419 +n01726692 7419 +n01673282 7419 +n01674464 7419 +n01699831 7419 +n01698434 7444 +n01697178 7444 +n01698640 7444 +n01699040 7444 +n01697611 7450 +n01697457 7450 +n01740551 7445 +n01752165 7445 +n01751748 7445 +n01745125 7445 +n01741562 7445 +n01727646 7445 +n01753488 7456 +n01752736 7456 +n01752585 7456 +n01753032 7456 +n01753959 7456 +n01754533 7465 +n01754370 7465 +n01754876 7465 +n01757901 7468 +n01757677 7468 +n01755581 7468 +n01757115 7468 +n01755740 7468 +n01756089 7468 +n01756508 7468 +n01756291 7468 +n01756733 7468 +n01757343 7468 +n01747885 7458 +n01749939 7458 +n01751472 7458 +n01747589 7458 +n01749582 7458 +n01746359 7458 +n01745484 7458 +n01748264 7479 +n01748906 7479 +n01741943 7459 +n01743605 7488 +n01742821 7488 +n01742172 7488 +n01743086 7488 +n01744100 7489 +n01743936 7489 +n01744401 7489 +n01730960 7460 +n01735189 7460 +n01733757 7460 +n01729322 7460 +n01732244 7460 +n01731545 7460 +n01737021 7460 +n01729977 7460 +n01730812 7460 +n01730563 7460 +n01728572 7460 +n01728920 7460 +n01739381 7460 +n01734418 7460 +n01740131 7460 +n01735577 7497 +n01735439 7497 +n01734104 7498 +n01733957 7498 +n01732614 7500 +n01732789 7500 +n01737875 7502 +n01737472 7502 +n01737728 7502 +n01730185 7503 +n01730307 7503 +n01734808 7509 +n01734637 7509 +n01675722 7447 +n01693783 7447 +n01694709 7447 +n01684133 7447 +n01692333 7447 +n01695060 7447 +n01685808 7447 +n01676755 7447 +n01687665 7447 +n01674990 7447 +n01694178 7447 +n01692864 7447 +n01689411 7447 +n01681940 7531 +n01681653 7531 +n01678343 7531 +n01682714 7531 +n01682435 7531 +n01681328 7531 +n01680264 7531 +n01679626 7531 +n01677366 7531 +n01677747 7531 +n01679962 7531 +n01680655 7543 +n01680478 7543 +n01687978 7532 +n01689081 7532 +n01688243 7532 +n01693334 7535 +n01693175 7535 +n01690149 7536 +n01689811 7536 +n01700470 7448 +n01713764 7448 +n01701859 7557 +n01704323 7557 +n01515303 6527 +n01844917 6527 +n01524359 6527 +n01514668 6527 +n01833805 6527 +n01838038 6527 +n01825930 6527 +n01844551 6527 +n01604330 6527 +n01834918 6527 +n01822602 6527 +n01514752 6527 +n01517565 6527 +n01789386 6527 +n01844231 6527 +n01816887 6527 +n01517966 6527 +n01503976 6527 +n01514859 6527 +n02000954 7562 +n01858441 7562 +n02016358 7562 +n02021795 7562 +n01845132 7562 +n02008041 7580 +n02014237 7580 +n02021050 7580 +n02018795 7580 +n02005790 7580 +n02002075 7580 +n02013177 7580 +n02012849 7580 +n02013706 7580 +n02014524 7580 +n02007558 7580 +n02014941 7580 +n02006656 7580 +n02005399 7580 +n02022684 7580 +n02008497 7585 +n02010453 7585 +n02009229 7585 +n02011281 7585 +n02008643 7585 +n02008796 7585 +n02011460 7585 +n02010728 7601 +n02011016 7601 +n02009750 7605 +n02009508 7605 +n02009380 7605 +n02009912 7605 +n02010272 7605 +n02012185 7606 +n02011805 7606 +n02006063 7589 +n02006364 7589 +n02003204 7590 +n02002724 7590 +n02002556 7590 +n02004131 7590 +n02003839 7590 +n02004492 7590 +n02004855 7590 +n02017725 7596 +n02015357 7596 +n02016066 7596 +n02015554 7596 +n02018027 7596 +n02018368 7629 +n02018207 7629 +n02006985 7597 +n02007284 7597 +n02023341 7599 +n02034129 7599 +n02034295 7599 +n02036053 7599 +n02040266 7599 +n02037110 7599 +n02034661 7599 +n02031585 7599 +n02031934 7599 +n02030996 7599 +n02036711 7599 +n02026059 7599 +n02033779 7599 +n02038993 7599 +n02033561 7599 +n02037464 7599 +n02024479 7634 +n02025239 7634 +n02023992 7634 +n02024763 7634 +n02025043 7634 +n02023855 7634 +n02034971 7640 +n02035210 7640 +n02032222 7642 +n02032355 7642 +n02032480 7642 +n02033041 7642 +n02030287 7645 +n02027897 7645 +n02030837 7645 +n02029087 7645 +n02029378 7645 +n02028035 7645 +n02027075 7645 +n02028900 7645 +n02027492 7645 +n02029706 7645 +n02027357 7645 +n02028727 7645 +n02030035 7645 +n02026948 7645 +n02028175 7645 +n02028342 7676 +n02028451 7676 +n02037869 7649 +n02038466 7649 +n01858845 7581 +n01858906 7581 +n01860002 7581 +n01858281 7581 +n01859190 7581 +n01858780 7581 +n01859325 7581 +n01860187 7581 +n01859496 7581 +n01859689 7689 +n01859852 7689 +n02016956 7582 +n02017213 7582 +n02016816 7582 +n02040505 7583 +n02057731 7583 +n02050004 7583 +n02045369 7583 +n02049088 7583 +n02051474 7583 +n02055658 7583 +n02047614 7583 +n02041085 7695 +n02044178 7695 +n02043808 7695 +n02043333 7703 +n02041246 7703 +n02043063 7703 +n02042472 7707 +n02041678 7707 +n02042180 7707 +n02041875 7707 +n02042759 7707 +n02042046 7707 +n02044778 7704 +n02044517 7704 +n02059162 7696 +n02058221 7696 +n02058594 7696 +n02060411 7717 +n02060889 7717 +n02060133 7717 +n02050442 7697 +n02050313 7697 +n02051059 7697 +n02050586 7697 +n02050809 7697 +n02045864 7698 +n02046759 7698 +n02045596 7698 +n02047260 7729 +n02046939 7729 +n02047411 7729 +n02047045 7729 +n02052775 7700 +n02054036 7700 +n02054502 7700 +n02051845 7700 +n02053083 7700 +n02054711 7700 +n02055107 7700 +n02052204 7738 +n02052365 7738 +n02053425 7739 +n02053584 7739 +n02055803 7701 +n02056728 7746 +n02057035 7746 +n02056570 7746 +n02057330 7746 +n02056228 7746 +n02048115 7702 +n02048353 7702 +n02047975 7702 +n01845477 7584 +n01855672 7755 +n01846331 7755 +n01856890 7756 +n01857851 7756 +n01857079 7756 +n01856380 7756 +n01857512 7756 +n01857325 7756 +n01856072 7756 +n01856553 7756 +n01856155 7756 +n01857632 7756 +n01847253 7757 +n01851375 7757 +n01849676 7757 +n01852329 7757 +n01850192 7757 +n01847978 7757 +n01852400 7757 +n01848840 7757 +n01849157 7757 +n01847806 7757 +n01849466 7757 +n01848123 7757 +n01850553 7757 +n01847089 7757 +n01851895 7757 +n01849863 7757 +n01852142 7757 +n01847000 7757 +n01852671 7757 +n01848976 7757 +n01847407 7757 +n01848648 7757 +n01852861 7757 +n01851207 7757 +n01851038 7757 +n01850373 7757 +n01850873 7757 +n01847170 7757 +n01851573 7769 +n01851731 7769 +n01848555 7779 +n01848323 7779 +n01848453 7779 +n01853195 7790 +n01853870 7790 +n01854415 7790 +n01853498 7790 +n01853666 7790 +n01854838 7803 +n01855032 7803 +n01855476 7803 +n01855188 7803 +n01854700 7803 +n01584225 7563 +n01546506 7563 +n01546921 7563 +n01525720 7563 +n01546039 7563 +n01539573 7563 +n01585121 7811 +n01585715 7811 +n01584695 7811 +n01586374 7811 +n01584853 7811 +n01586020 7811 +n01552813 7813 +n01551711 7813 +n01555004 7813 +n01554448 7813 +n01547832 7813 +n01548301 7827 +n01549886 7827 +n01549430 7827 +n01550172 7827 +n01549641 7827 +n01555305 7827 +n01549053 7828 +n01548865 7828 +n01548492 7828 +n01563128 7814 +n01589718 7814 +n01578575 7814 +n01576695 7814 +n01528654 7814 +n01591697 7814 +n01594004 7814 +n01557185 7814 +n01527347 7814 +n01597022 7814 +n01598588 7814 +n01527617 7814 +n01576076 7814 +n01555809 7814 +n01587834 7814 +n01602630 7814 +n01597336 7814 +n01538955 7814 +n01529672 7814 +n01600657 7814 +n01601694 7814 +n01527194 7814 +n01586941 7814 +n01588002 7814 +n01527917 7814 +n01587526 7814 +n01601068 7814 +n01603600 7814 +n01602832 7814 +n01571904 7814 +n01575745 7814 +n01566645 7814 +n01594372 7814 +n01589286 7814 +n01526521 7814 +n01582856 7814 +n01528396 7814 +n01528845 7814 +n01556182 7814 +n01542786 7814 +n01590583 7814 +n01564914 7837 +n01567133 7837 +n01563746 7837 +n01564394 7837 +n01563449 7837 +n01565078 7837 +n01570676 7879 +n01570839 7879 +n01570267 7879 +n01567678 7879 +n01569060 7879 +n01568892 7879 +n01568294 7879 +n01569971 7879 +n01569262 7879 +n01567879 7879 +n01568720 7879 +n01569423 7879 +n01563945 7880 +n01564217 7880 +n01566207 7881 +n01565599 7881 +n01565930 7881 +n01564773 7881 +n01579410 7839 +n01581984 7839 +n01579578 7839 +n01582398 7839 +n01580077 7839 +n01579260 7839 +n01579028 7839 +n01582220 7839 +n01579149 7839 +n01580870 7906 +n01581166 7906 +n01577035 7840 +n01578180 7840 +n01577659 7840 +n01593028 7842 +n01592084 7842 +n01592694 7842 +n01592387 7842 +n01592540 7917 +n01592257 7917 +n01562265 7844 +n01558993 7844 +n01559477 7844 +n01558461 7844 +n01558307 7844 +n01558149 7844 +n01560105 7844 +n01558594 7844 +n01557962 7844 +n01558765 7844 +n01561732 7844 +n01562014 7844 +n01560280 7844 +n01562451 7844 +n01561452 7844 +n01560419 7844 +n01560636 7844 +n01559804 7844 +n01560793 7938 +n01560935 7938 +n01598988 7847 +n01599556 7847 +n01600085 7847 +n01599269 7942 +n01599159 7942 +n01597906 7853 +n01598074 7853 +n01597737 7853 +n01533651 7855 +n01534155 7855 +n01540233 7855 +n01531178 7855 +n01534762 7855 +n01533893 7855 +n01537134 7855 +n01531344 7855 +n01541386 7855 +n01531512 7855 +n01533481 7855 +n01541922 7855 +n01533000 7855 +n01544704 7855 +n01530575 7855 +n01532325 7855 +n01532511 7855 +n01531811 7855 +n01534582 7855 +n01532829 7855 +n01530439 7855 +n01533339 7855 +n01531971 7855 +n01534433 7855 +n01541102 7952 +n01540566 7952 +n01540832 7952 +n01536644 7954 +n01535469 7954 +n01536334 7954 +n01536186 7954 +n01535690 7954 +n01536780 7954 +n01536035 7954 +n01537544 7956 +n01538059 7956 +n01538630 7956 +n01537895 7956 +n01538200 7956 +n01603812 7864 +n01603953 7864 +n01573898 7866 +n01573074 7866 +n01572328 7866 +n01572782 7866 +n01574045 7866 +n01573240 7992 +n01573360 7992 +n01572654 7993 +n01572489 7993 +n01574560 7995 +n01575117 7995 +n01574390 7995 +n01575401 7995 +n01595450 7869 +n01595168 7869 +n01595624 7869 +n01594787 7869 +n01594968 7869 +n01595974 8006 +n01596273 8006 +n01583209 7872 +n01583495 7872 +n01543632 7876 +n01544389 7876 +n01591123 7877 +n01591005 7877 +n01591301 7877 +n01539925 7816 +n01540090 7816 +n01834540 7565 +n01834177 7565 +n01843065 7566 +n01838598 7566 +n01842235 7566 +n01843719 7566 +n01843383 7566 +n01839598 8023 +n01839330 8023 +n01839086 8023 +n01841102 8023 +n01841679 8023 +n01840775 8023 +n01839750 8023 +n01841441 8030 +n01841288 8030 +n01827403 7567 +n01826364 7567 +n01830915 7567 +n01830042 7567 +n01829413 7567 +n01826680 7567 +n01829869 7567 +n01828970 7567 +n01828556 8036 +n01827793 8036 +n01828096 8036 +n01616318 7569 +n01605630 7569 +n01618503 7569 +n01613294 7569 +n01621127 7569 +n01616764 8047 +n01618922 8047 +n01617766 8052 +n01617443 8052 +n01618082 8052 +n01617095 8052 +n01620414 8053 +n01619310 8053 +n01620735 8053 +n01619536 8053 +n01619835 8061 +n01620135 8061 +n01609751 8048 +n01606522 8048 +n01607812 8048 +n01608265 8048 +n01610955 8048 +n01610552 8048 +n01606809 8048 +n01616086 8048 +n01608432 8048 +n01607600 8048 +n01607962 8048 +n01606672 8048 +n01609956 8064 +n01610226 8064 +n01613177 8068 +n01611800 8068 +n01611472 8068 +n01612628 8068 +n01612476 8068 +n01612275 8068 +n01611969 8068 +n01612122 8068 +n01609391 8072 +n01609062 8072 +n01608814 8072 +n01613807 8050 +n01614343 8050 +n01615121 8050 +n01614925 8050 +n01614038 8050 +n01614556 8050 +n01615703 8091 +n01615458 8091 +n01622959 8051 +n01621635 8051 +n01623880 8051 +n01623425 8051 +n01622352 8051 +n01623615 8051 +n01622120 8051 +n01625562 8051 +n01623706 8051 +n01624115 8051 +n01624537 8051 +n01622483 8051 +n01623110 8051 +n01624833 8051 +n01622779 8051 +n01837072 7570 +n01835276 7570 +n01825278 7571 +n01823013 7571 +n01824575 8115 +n01824035 8115 +n01521399 7573 +n01521756 7573 +n01518878 7573 +n01519873 7573 +n01519563 7573 +n01789740 7574 +n01810700 7574 +n01801876 7574 +n01791463 7574 +n01791107 7574 +n02153203 7574 +n01794344 8123 +n01791954 8123 +n01794158 8123 +n01809106 8123 +n01791625 8123 +n01792429 8133 +n01792158 8133 +n01793435 8133 +n01792042 8133 +n01793715 8133 +n01792640 8133 +n01793249 8139 +n01792955 8139 +n01815601 8124 +n01811909 8124 +n01814370 8143 +n01812337 8143 +n01813088 8143 +n01812662 8143 +n01814921 8144 +n01814755 8144 +n01813532 8145 +n01813385 8145 +n01813948 8145 +n01814217 8145 +n01802721 8128 +n01810268 8128 +n01795088 8128 +n01803078 8154 +n01806567 8154 +n01807496 8154 +n01807105 8157 +n01803362 8157 +n01804163 8157 +n01805801 8157 +n01806297 8163 +n01806364 8163 +n01806143 8163 +n01806467 8163 +n01804478 8158 +n01806847 8158 +n01804653 8158 +n01808140 8159 +n01807828 8159 +n01797307 8156 +n01798484 8156 +n01797020 8156 +n01797886 8156 +n01797601 8156 +n01796729 8156 +n01795545 8156 +n01796340 8156 +n01819734 7576 +n01821203 7576 +n01819115 7576 +n01817346 7576 +n01818832 7576 +n01817953 7576 +n01818515 7576 +n01818299 7576 +n01820052 7576 +n01820348 7576 +n01817263 7576 +n01821869 8182 +n01822300 8182 +n01819313 8183 +n01819465 8183 +n01821076 8190 +n01820546 8190 +n01317089 6469 +n01317294 6469 +n01918744 6470 +n01922303 6470 +n01940736 6470 +n02316707 6470 +n01909422 6470 +n01767661 6470 +n01906749 6470 +n01930112 8201 +n01934440 8201 +n01924916 8201 +n01938454 8208 +n01935395 8208 +n01955084 8202 +n01955933 8202 +n01968315 8202 +n01942177 8202 +n01960459 8213 +n01963317 8213 +n01956481 8213 +n01963571 8213 +n01959985 8213 +n01965889 8213 +n01961985 8213 +n01957335 8218 +n01958038 8218 +n01959492 8218 +n01964441 8219 +n01964271 8219 +n01965529 8219 +n01969726 8214 +n01968897 8214 +n01972541 8214 +n01970164 8229 +n01970667 8229 +n01951274 8215 +n01953361 8215 +n01943899 8215 +n01945845 8215 +n01943087 8215 +n01953762 8215 +n01950731 8215 +n01945685 8215 +n01944390 8215 +n01949085 8237 +n01947396 8237 +n01946630 8237 +n01944812 8242 +n01945143 8242 +n01944955 8242 +n02317335 8203 +n02321170 8203 +n02319555 8203 +n02319095 8203 +n02321529 8203 +n02317781 8203 +n01909906 8204 +n01914163 8204 +n01913166 8204 +n01910747 8204 +n01915700 8256 +n01914609 8256 +n01915811 8256 +n01916925 8261 +n01916187 8261 +n01916481 8261 +n01917882 8262 +n01917289 8262 +n01784675 8205 +n01974773 8205 +n01768244 8205 +n01786646 8205 +n01769347 8205 +n01787835 8205 +n02309242 8205 +n02159955 8205 +n01785667 8205 +n01994910 8268 +n01976868 8268 +n01990007 8268 +n01975687 8268 +n01976146 8268 +n01990800 8279 +n01992773 8279 +n01991520 8281 +n01991028 8281 +n01982650 8280 +n01986806 8280 +n01986214 8280 +n01987545 8280 +n01976957 8280 +n01985128 8280 +n01984245 8285 +n01984695 8285 +n01983481 8285 +n01981276 8289 +n01979874 8289 +n01978455 8289 +n01978287 8289 +n01980166 8289 +n01982068 8289 +n01770393 8271 +n01770081 8271 +n01776192 8271 +n01772222 8271 +n01776313 8302 +n01779629 8302 +n01779148 8302 +n01772664 8303 +n01775370 8303 +n01774750 8303 +n01775062 8303 +n01773797 8303 +n01774384 8303 +n01773157 8303 +n01773549 8303 +n02226183 8274 +n02236896 8274 +n02263378 8274 +n02232951 8274 +n02163297 8274 +n02262449 8274 +n02246011 8274 +n02188699 8274 +n02272871 8274 +n02273392 8274 +n02231052 8274 +n02161457 8274 +n02236355 8274 +n02312427 8274 +n02231487 8274 +n02162561 8274 +n02164464 8274 +n02241569 8274 +n02262803 8274 +n02206270 8274 +n02274024 8274 +n02312640 8274 +n02268148 8274 +n02270623 8274 +n02207805 8274 +n02226429 8315 +n02229544 8315 +n02228341 8340 +n02226970 8340 +n02241426 8316 +n02240517 8316 +n02266050 8317 +n02264885 8317 +n02264363 8317 +n02236044 8318 +n02236241 8318 +n02233338 8318 +n02234355 8351 +n02234848 8351 +n02233943 8351 +n02251775 8321 +n02256656 8321 +n02258198 8321 +n02257284 8321 +n02250822 8321 +n02259212 8321 +n02252226 8321 +n02200198 8322 +n02205219 8322 +n02203152 8322 +n02196344 8322 +n02190166 8322 +n02198859 8322 +n02196119 8322 +n02201000 8362 +n02202006 8362 +n02195819 8366 +n02195526 8366 +n02192513 8366 +n02191773 8366 +n02190790 8366 +n02192252 8374 +n02191979 8374 +n02169974 8331 +n02168245 8331 +n02167151 8331 +n02169023 8331 +n02165456 8331 +n02171453 8331 +n02180875 8331 +n02183096 8331 +n02169497 8331 +n02176261 8331 +n02176439 8331 +n02165105 8331 +n02177972 8331 +n02168699 8331 +n02166567 8382 +n02166826 8382 +n02171869 8383 +n02175916 8383 +n02175569 8394 +n02172870 8394 +n02173373 8394 +n02174001 8394 +n02172182 8394 +n02172518 8394 +n02174659 8394 +n02243562 8332 +n02244797 8332 +n02212062 8334 +n02218371 8334 +n02219486 8334 +n02206856 8334 +n02216211 8405 +n02215770 8405 +n02212602 8405 +n02213107 8411 +n02212958 8411 +n02213543 8411 +n02213239 8412 +n02213788 8412 +n02220804 8407 +n02221083 8407 +n02221414 8407 +n02209354 8408 +n02208280 8408 +n02211627 8408 +n02210427 8408 +n02211444 8408 +n02209624 8408 +n02208498 8421 +n02208848 8421 +n02274259 8335 +n02283201 8335 +n02281787 8428 +n02274822 8428 +n02281406 8428 +n02277742 8428 +n02279972 8428 +n02280649 8428 +n02282257 8430 +n02282903 8430 +n02282385 8430 +n02275773 8431 +n02278210 8431 +n02276258 8431 +n02276902 8431 +n02279257 8431 +n02277094 8431 +n02276078 8431 +n02275560 8431 +n02277268 8431 +n02276355 8431 +n02276749 8431 +n02278024 8431 +n02281015 8435 +n02281136 8435 +n02305929 8429 +n02301452 8429 +n02295064 8429 +n02298541 8429 +n02284611 8429 +n02287004 8429 +n02291572 8429 +n02305085 8454 +n02301935 8454 +n02304432 8454 +n02303284 8454 +n02302969 8454 +n02292692 8459 +n02291748 8459 +n02268443 8337 +n02268853 8337 +n01321123 6471 +n02376679 6471 +n01323493 6471 +n01338685 5175 +n01387065 5175 +n01339083 8472 +n01339336 8472 +n01339801 8472 +n01339471 8472 +n01397114 8473 +n01389507 8473 +n01397871 8478 +n01410457 8478 +n01407798 8478 +n01424420 8479 +n01392380 8479 +n01395254 8479 +n01396048 8479 +n11542137 5176 +n11544015 5176 +n11542640 5176 +n09626238 5177 +n09856671 5177 +n09605289 5177 +n09622049 5177 +n09971273 5177 +n09882716 5177 +n09621232 5177 +n09902954 5177 +n09620794 5177 +n09727440 5177 +n09624168 5177 +n09752519 5177 +n10378026 5177 +n10500217 5177 +n10514429 5177 +n09610405 5177 +n09617867 5177 +n10355449 5177 +n09618957 5177 +n10002760 5177 +n10384496 5177 +n09637339 5177 +n09613191 5177 +n09836160 5177 +n10274815 5177 +n09890749 5177 +n10112591 5177 +n10260706 5177 +n09606527 5177 +n09767197 5177 +n10709529 5177 +n09976429 5177 +n09918554 5177 +n10588074 5177 +n10565667 5177 +n09990415 5177 +n10120330 5177 +n09616922 5177 +n09622302 5177 +n09630641 5177 +n09796809 5177 +n09614684 5177 +n10635788 5177 +n09645091 5177 +n10405694 5177 +n09676884 5177 +n09638875 5177 +n09874428 5177 +n09627906 5177 +n09628382 5177 +n10522759 5177 +n10247880 5177 +n09624980 5177 +n10529231 5177 +n10024362 5177 +n09614315 5177 +n09612848 5177 +n09632518 5177 +n10147935 5177 +n09871867 5177 +n09620078 5177 +n09634494 5177 +n10077593 5177 +n10040945 5177 +n09623038 5177 +n10560106 5177 +n10289039 5177 +n10422405 5177 +n09774783 5177 +n10042845 5177 +n09831962 5177 +n10726031 5177 +n09923673 5177 +n09610660 5177 +n09626031 5177 +n10401331 5177 +n09621545 5177 +n10362319 5177 +n10665698 5177 +n09906449 5177 +n09939313 5177 +n10439373 5177 +n09607630 5177 +n09631463 5177 +n10451450 5177 +n10541229 5177 +n09793141 5177 +n10633450 5177 +n10530959 5177 +n09629752 5177 +n10560637 5177 +n10431625 5177 +n09619168 5177 +n09763784 5177 +n09636339 5177 +n10235549 5177 +n09845401 5177 +n10513823 5177 +n10610465 5177 +n09951274 5177 +n09816771 8490 +n10401829 8590 +n10307234 8590 +n10505613 8590 +n10148035 8591 +n09874725 8591 +n09944022 8592 +n10015485 8592 +n10728624 8592 +n10308168 8592 +n10200781 8492 +n10480253 8492 +n10376523 8492 +n09903153 8600 +n10748620 8600 +n10581890 8601 +n10045713 8601 +n10165109 8601 +n10694258 8606 +n10509063 8606 +n10559996 8606 +n10366966 8607 +n10305802 8607 +n10421470 8607 +n10164492 8611 +n10477713 8611 +n10020890 8612 +n10679174 8616 +n10632576 8616 +n10189278 8616 +n09894445 8618 +n10504206 8618 +n10559288 8493 +n09917593 8493 +n09833441 8623 +n10384392 8623 +n10060352 8495 +n09840217 8495 +n09777012 8495 +n10309896 8495 +n09905185 8495 +n10686885 8628 +n10209731 8628 +n10093818 8629 +n10754189 8629 +n10411551 8629 +n10577284 8629 +n10285313 8500 +n10333439 8500 +n10624074 8500 +n10287213 8500 +n09871229 8637 +n10078719 8637 +n09843443 8637 +n10173771 8640 +n10192839 8640 +n10419785 8640 +n10406266 8640 +n10288964 8640 +n10804287 8640 +n10665587 8640 +n10153414 8640 +n10406765 8640 +n10611613 8506 +n09805324 8506 +n09824361 8506 +n10316360 8506 +n10707233 8506 +n10696508 8506 +n09858165 8506 +n10175248 8655 +n09979321 8655 +n10692482 8661 +n10396106 8661 +n10427764 8657 +n10385566 8657 +n10439851 8512 +n09820263 8512 +n10533013 8512 +n09854421 8666 +n10304914 8666 +n10575463 8666 +n09915651 8666 +n10453184 8666 +n10101634 8667 +n10701180 8667 +n09835230 8667 +n10746931 8667 +n10542888 8667 +n10604491 8667 +n09764381 8667 +n09929298 8667 +n10019406 8667 +n09785659 8667 +n10618342 8667 +n10782471 8667 +n10701644 8667 +n10105733 8667 +n10638922 8667 +n09842047 8667 +n10315561 8667 +n09835506 8667 +n10153594 8667 +n09830194 8674 +n10263411 8674 +n10157128 8693 +n10498816 8693 +n10689306 8693 +n10604380 8679 +n10634849 8679 +n09923561 8680 +n09764598 8680 +n10086568 8691 +n10007684 8691 +n09841696 8691 +n10321340 8691 +n10092488 8702 +n10386984 8702 +n10387196 8702 +n10205457 8702 +n10578021 8668 +n10098710 8668 +n09836519 8513 +n09836786 8513 +n09836343 8513 +n09877951 8516 +n10300154 8516 +n10095769 8516 +n10435988 8520 +n09930257 8718 +n10387324 8718 +n10098862 8525 +n10642596 8721 +n10331167 8721 +n09946814 8527 +n10299250 8527 +n09896170 8527 +n10415638 8527 +n10091450 8727 +n10069296 8727 +n09989502 8727 +n10226413 8727 +n10493685 8727 +n09765278 8727 +n09930876 8727 +n10340312 8727 +n09990777 8730 +n09834699 8730 +n10737103 8733 +n10649197 8733 +n10701962 8735 +n10415037 8735 +n10151760 8735 +n10229883 8735 +n10732010 8735 +n10603851 8735 +n10599806 8735 +n10369317 8735 +n09903501 8735 +n10755080 8735 +n10098245 8735 +n10382825 8735 +n10536416 8735 +n10036929 8735 +n10624310 8746 +n09842528 8746 +n10085869 8528 +n09991867 8528 +n10078131 8528 +n10627252 8528 +n10682953 8528 +n10237196 8528 +n09789566 8529 +n10182190 8529 +n09899671 8529 +n10150071 8531 +n10091651 8531 +n10806113 8531 +n10249459 8531 +n10317500 8768 +n09822830 8768 +n10448983 8768 +n09862621 8771 +n10540114 8771 +n10009276 8771 +n10333838 8771 +n10730728 8771 +n10721321 8771 +n09659188 8533 +n09650729 8533 +n09652149 8533 +n09659039 8533 +n09729530 8536 +n09641002 8536 +n09725653 8782 +n09846469 8782 +n09750770 8782 +n10486166 8538 +n10169147 8538 +n09684901 8539 +n09683757 8539 +n09682291 8539 +n10364198 8539 +n10518602 8539 +n10341573 8791 +n10672371 8791 +n10332861 8793 +n10112129 8793 +n10602470 8793 +n10727256 8542 +n10508141 8542 +n10652605 8799 +n09881265 8799 +n09933098 8545 +n09812338 8545 +n09920283 8545 +n10078806 8545 +n10339966 8804 +n10667477 8804 +n10566072 8804 +n10469874 8804 +n10624540 8807 +n09809925 8807 +n09846755 8806 +n09873899 8806 +n09779790 8806 +n10034614 8546 +n10449664 8546 +n10034201 8546 +n09951616 8546 +n10037385 8818 +n09846894 8818 +n10282672 8547 +n10053808 8547 +n09815790 8547 +n10137825 8547 +n10605985 8547 +n10604979 8547 +n09861946 8547 +n10763383 8823 +n09841188 8823 +n10644598 8823 +n10548681 8823 +n10791221 8823 +n10583790 8823 +n09873473 8823 +n10763620 8823 +n10548537 8823 +n10120671 8823 +n10241300 8833 +n10318293 8833 +n10176679 8839 +n09932508 8839 +n10186216 8841 +n10134178 8841 +n10079399 8841 +n09821831 8824 +n09934337 8824 +n10324560 8824 +n10063461 8846 +n09886403 8846 +n09760609 8846 +n10260800 8846 +n10655594 8846 +n09938449 8849 +n10183931 8849 +n09972458 8848 +n09813219 8848 +n10049363 8826 +n10372373 8826 +n10076604 8826 +n09835348 8826 +n09974648 8826 +n10433164 8826 +n09859152 8826 +n10727171 8826 +n10308732 8826 +n09833536 8826 +n10582746 8826 +n10393909 8826 +n10013927 8859 +n10225219 8859 +n10202624 8859 +n09800964 8859 +n10465831 8859 +n09787534 8870 +n10174445 8870 +n10441962 8870 +n10132035 8862 +n09896685 8862 +n09934774 8862 +n10279018 8862 +n10793570 8862 +n10155849 8862 +n10087434 8863 +n09964202 8863 +n09811852 8868 +n10348526 8868 +n10317007 8868 +n10058777 8868 +n10360747 8888 +n09941964 8888 +n10347446 8888 +n09770359 8888 +n09941787 8888 +n09942970 8888 +n09809749 8888 +n09770179 8888 +n10208950 8888 +n10580772 8890 +n10093475 8899 +n10645017 8899 +n09943239 8895 +n09943541 8895 +n10263790 8895 +n10283170 8902 +n10259348 8902 +n10092978 8902 +n10296176 8902 +n09893191 8902 +n10123844 8902 +n10259780 8902 +n10259997 8903 +n10510245 8903 +n10622053 8889 +n10058585 8889 +n10690648 8914 +n10523341 8914 +n10739391 8914 +n10476467 8915 +n10512372 8915 +n10802507 8915 +n10753442 8550 +n09733793 8550 +n09738708 8550 +n09641757 8550 +n09738400 8550 +n09727826 8550 +n09686536 8550 +n09724533 8550 +n09744834 8924 +n09743792 8924 +n09744161 8924 +n09742101 8924 +n09689435 8925 +n09734450 8925 +n09644152 8925 +n09750282 8925 +n09673495 8925 +n09718811 8925 +n09718217 8925 +n09712696 8925 +n09718936 8925 +n10711766 8925 +n09694771 8925 +n09719794 8925 +n09714694 8925 +n09675922 8938 +n09676247 8938 +n10774440 8926 +n09720256 8926 +n09725229 8926 +n09731571 8926 +n09691729 8949 +n09693982 8949 +n09712448 8949 +n09697401 8951 +n09696585 8951 +n09722658 8956 +n09724656 8956 +n09723067 8956 +n09694664 8952 +n09712324 8952 +n09689958 8928 +n09695979 8928 +n10327987 8928 +n09688804 8928 +n09730204 8928 +n09711435 8928 +n09713108 8928 +n09731343 8928 +n09717233 8928 +n09695620 8928 +n09728285 8928 +n09707289 8928 +n09701833 8928 +n09700964 8928 +n09750891 8928 +n09715427 8928 +n09708750 8928 +n09705784 8551 +n09734185 8551 +n09752023 8551 +n09635534 8551 +n09696456 8551 +n09732170 8551 +n09730824 8551 +n09719309 8551 +n09734535 8551 +n09736945 8551 +n09720842 8551 +n09692915 8551 +n09751895 8551 +n09724785 8551 +n09747495 8551 +n09734639 8551 +n09749386 8551 +n09705124 8551 +n09731436 8551 +n10303814 8554 +n10450303 8554 +n10722575 8554 +n10054657 8554 +n10631309 8554 +n10249270 8554 +n09913455 8554 +n10162991 8554 +n09807754 8554 +n09505153 8554 +n10209082 8554 +n10323634 8554 +n10104064 8554 +n10001481 9000 +n10242328 9000 +n10159045 9001 +n09932098 9001 +n10253995 9004 +n10005934 9016 +n10578471 9016 +n09770949 9006 +n10004718 9006 +n10570019 9006 +n10289462 9019 +n10069645 9019 +n10187990 9019 +n09916348 9023 +n10727458 9023 +n10320863 9023 +n10572706 9021 +n10572889 9021 +n10038409 9007 +n10756148 9007 +n09927451 9008 +n10243664 9008 +n10502329 9008 +n09988493 9008 +n10373390 9032 +n10470779 9032 +n09928136 9032 +n10750031 9037 +n10081204 9037 +n09857200 9037 +n10013811 9041 +n09894143 9041 +n10313239 9041 +n10082997 8558 +n10677713 8558 +n09787765 8558 +n10485883 8558 +n10275395 9046 +n09913593 9046 +n09772930 8560 +n09633969 8560 +n10195593 9052 +n09756049 9052 +n10607478 9052 +n09855433 8563 +n10017272 8563 +n10630188 8563 +n10522035 8563 +n10521662 8563 +n10380672 9058 +n10210911 9058 +n10382710 9059 +n10164747 9059 +n09782397 9059 +n10524076 9059 +n10467395 9064 +n10467179 9064 +n10698368 9060 +n09792969 9060 +n10525617 8564 +n10675010 8564 +n09889941 8564 +n10557854 8566 +n09618760 8566 +n09899929 8566 +n10116702 9074 +n10258786 9074 +n10508710 9074 +n09873348 8570 +n09870208 8570 +n10793168 8570 +n10098517 9081 +n10314517 9081 +n10629939 9081 +n10477077 9081 +n10261624 9086 +n10082687 9086 +n10262445 9086 +n10167152 9082 +n10098624 9082 +n10674713 9082 +n09838621 9082 +n10047459 8573 +n10091564 8573 +n10740868 8573 +n09872066 9094 +n10070711 9094 +n10628644 8575 +n10421016 8575 +n09915434 8575 +n10588357 8575 +n10529965 8579 +n10334009 8579 +n10339717 8579 +n09818022 8579 +n10412055 8579 +n10335931 8579 +n09945745 8579 +n10432441 8579 +n10607291 8579 +n10583387 8579 +n10718131 8579 +n10542761 8579 +n10147121 8579 +n10738111 9103 +n10159533 9103 +n10223177 9103 +n10185793 9103 +n10553235 9107 +n10293332 9107 +n10178216 9108 +n10563403 9108 +n10488656 8580 +n10619642 8580 +n10276477 8580 +n10620758 9125 +n10450161 9125 +n10043643 9125 +n10043491 9129 +n10313724 9129 +n10084295 8582 +n10787470 8582 +n10333601 8582 +n10131151 8582 +n09871681 9132 +n09981939 9132 +n10055410 9133 +n10243137 9133 +n10377021 9133 +n10368528 9133 +n10025635 9133 +n09874862 9133 +n10613996 9133 +n10472129 9133 +n10598181 9133 +n10129825 9133 +n09847543 9133 +n10173410 9133 +n10780284 9133 +n09889065 9133 +n09832456 9133 +n10780632 9133 +n10117851 9147 +n09827363 9147 +n10247358 9147 +n10282482 9147 +n10092794 9153 +n10375314 9153 +n09981278 9153 +n10082043 8585 +n09972010 8585 +n10237069 8585 +n09792555 8585 +n10236946 8585 +n10568358 8585 +n10207169 8585 +n10236304 8585 +n10734394 8585 +n10373998 8585 +n10595164 8585 +n10357613 9163 +n09823502 9163 +n10146104 9163 +n10602985 9163 +n10145239 9163 +n10267865 9175 +n09854218 9175 +n10399491 9164 +n10102800 9164 +n10102369 9164 +n10406391 9164 +n10300500 9179 +n10080869 9179 +n10332385 9179 +n09988063 9184 +n10375402 9184 +n10145774 9181 +n10143172 9181 +n10145590 9181 +n10345015 9189 +n10142747 9189 +n10142391 9189 +n10146002 9165 +n10267311 9165 +n10141590 9170 +n10092643 9170 +n09918248 9170 +n10671613 9170 +n10141732 9196 +n10145340 9196 +n10145902 9201 +n10145480 9201 +n09827683 9198 +n10135129 9204 +n10465451 9204 +n10353016 9204 +n13001930 5178 +n13040629 5178 +n12969131 5178 +n12985420 5178 +n13052670 5178 +n13037406 5178 +n13077295 5178 +n12987056 5178 +n12979829 5178 +n12975804 5178 +n12974987 5178 +n12985773 5178 +n13044778 5178 +n12985857 5178 +n13035241 5178 +n13043926 5178 +n12982468 5178 +n13035707 5178 +n13044375 5178 +n12969425 5178 +n13060190 5178 +n13054073 5178 +n13040303 5178 +n13028611 5178 +n12997654 5178 +n12983048 5178 +n13062421 5178 +n13054560 5178 +n12963628 9214 +n12980840 9214 +n12991184 9215 +n12989938 9215 +n12992177 9215 +n12988158 9215 +n13029326 9231 +n13029760 9231 +n13011595 9232 +n13049953 9232 +n12998815 9232 +n12997919 9232 +n13052931 9245 +n13050397 9245 +n13012253 9246 +n13001041 9246 +n13005984 9246 +n13000891 9246 +n13007417 9246 +n13019835 9246 +n13013764 9246 +n13006894 9246 +n13002750 9246 +n13017102 9246 +n13232779 9246 +n13009429 9246 +n13013534 9246 +n13003522 9246 +n13001366 9246 +n13009085 9246 +n13022210 9246 +n13002925 9246 +n13006171 9246 +n13003712 9246 +n13001206 9246 +n13004423 9246 +n13001529 9246 +n13003254 9246 +n13003061 9246 +n13032115 9247 +n13032381 9275 +n13033577 9275 +n13055577 9235 +n13055949 9235 +n13055423 9235 +n05430628 5171 +n05450617 9281 +n05449959 9281 +n05451384 9283 +n05453657 9283 +n09369169 1043 +n09454412 1043 +n09403211 1043 +n13086908 1043 +n09416076 1043 +n09251407 1043 +n05218119 1043 +n09444100 1043 +n09438940 1043 +n09257949 1043 +n09189157 9286 +n09475044 9286 +n11691857 9289 +n13102775 9289 +n13087625 9289 +n13022709 9289 +n11675842 9300 +n13152742 9300 +n13125117 9300 +n13129165 9300 +n11690254 9300 +n11669335 9302 +n13134947 9302 +n11676500 9302 +n11675025 9307 +n11674332 9307 +n11669786 9307 +n13131028 9311 +n13132338 9311 +n13132656 9311 +n12301445 9308 +n13133613 9308 +n13141415 9308 +n13137409 9308 +n12642090 9308 +n12267677 9308 +n12658481 9308 +n12144313 9308 +n12158031 9308 +n13135832 9308 +n12620546 9308 +n11636835 9308 +n13139055 9308 +n12144580 9325 +n07929351 9325 +n13136556 9325 +n12768682 9325 +n11689483 9325 +n13136316 9325 +n07770571 9325 +n07737081 9331 +n07774842 9336 +n07774596 9336 +n07775050 9336 +n07772788 9336 +n07771212 9336 +n07772147 9336 +n07772274 9336 +n07774719 9336 +n07737745 9336 +n07772935 9336 +n15086247 9333 +n11879895 9333 +n12576323 9334 +n12532564 9334 +n07814634 9335 +n07775197 9335 +n07770763 9335 +n11748002 9328 +n12172364 9328 +n12515925 9354 +n12560282 9354 +n12578916 9354 +n12560621 9354 +n12544539 9354 +n12024690 9303 +n13154494 9303 +n11690455 9303 +n12927013 9304 +n11953610 9304 +n13128365 9305 +n13133932 9305 +n13163991 9305 +n13134059 9305 +n13131618 9305 +n13130726 9305 +n11678010 9305 +n12136392 9305 +n11979964 9366 +n12088223 9366 +n12462805 9369 +n12433081 9369 +n09218494 9290 +n09381242 9290 +n09460046 9290 +n09451237 9293 +n09450163 9293 +n01904182 9295 +n13155095 9295 +n09432283 9295 +n11705387 9295 +n09438844 9295 +n11692265 9295 +n05237755 9295 +n09416890 9295 +n01956764 9383 +n01904806 9383 +n01904886 9383 +n05586759 9389 +n05581932 9389 +n01904029 9389 +n05238282 9389 +n05254795 9389 +n02469248 9389 +n05256862 9398 +n05258051 9398 +n01899894 9398 +n05261404 9398 +n05259914 9400 +n05261310 9400 +n05260240 9400 +n05262185 9403 +n05261566 9403 +n05262534 9407 +n05262422 9407 +n05263183 9408 +n05263448 9408 +n11524662 3 +n11448153 3 +n09247410 3 +n11508382 9413 +n11524451 9413 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/coco.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/coco.names" new file mode 100644 index 00000000..ca76c80b --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/coco.names" @@ -0,0 +1,80 @@ +person +bicycle +car +motorbike +aeroplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +sofa +pottedplant +bed +diningtable +toilet +tvmonitor +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/coco9k.map" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/coco9k.map" new file mode 100644 index 00000000..5155b652 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/coco9k.map" @@ -0,0 +1,80 @@ +5177 +3768 +3802 +3800 +4107 +4072 +4071 +3797 +4097 +2645 +5150 +2644 +3257 +2523 +6527 +6866 +6912 +7342 +7255 +7271 +7217 +6858 +7343 +7233 +3704 +4374 +3641 +5001 +3899 +2999 +2631 +5141 +2015 +1133 +1935 +1930 +5144 +5143 +2371 +3916 +3745 +3640 +4749 +4736 +4735 +3678 +58 +42 +771 +81 +152 +141 +786 +700 +218 +791 +2518 +2521 +3637 +2458 +2505 +2519 +3499 +2837 +3503 +2597 +3430 +2080 +5103 +5111 +5102 +3013 +5096 +1102 +3218 +4010 +2266 +1127 +5122 +2360 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/dog.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/dog.jpg" new file mode 100644 index 00000000..77b03812 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/dog.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/eagle.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/eagle.jpg" new file mode 100644 index 00000000..8b750950 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/eagle.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/giraffe.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/giraffe.jpg" new file mode 100644 index 00000000..a93e8b88 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/giraffe.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/goal.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/goal.txt" new file mode 100644 index 00000000..c63d1573 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/goal.txt" @@ -0,0 +1,3 @@ ++++++ +val_eq (Val.add (Val.add (r3 PC) Vone) Vone) (Val.add (x2 PC) Vone) +***** diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/horses.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/horses.jpg" new file mode 100644 index 00000000..3a761f46 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/horses.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/imagenet.labels.list" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/imagenet.labels.list" new file mode 100644 index 00000000..23268724 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/imagenet.labels.list" @@ -0,0 +1,21842 @@ +n02119789 +n02100735 +n02110185 +n02096294 +n02102040 +n02066245 +n02509815 +n02124075 +n02417914 +n02123394 +n02125311 +n02423022 +n02346627 +n02077923 +n02110063 +n02447366 +n02109047 +n02089867 +n02102177 +n02091134 +n02092002 +n02071294 +n02442845 +n02504458 +n02092339 +n02098105 +n02096437 +n02114712 +n02105641 +n02128925 +n02091635 +n02088466 +n02096051 +n02117135 +n02138441 +n02097130 +n02493509 +n02457408 +n02389026 +n02443484 +n02110341 +n02089078 +n02086910 +n02445715 +n02093256 +n02113978 +n02106382 +n02441942 +n02113712 +n02113186 +n02105162 +n02415577 +n02356798 +n02488702 +n02123159 +n02098413 +n02422699 +n02114855 +n02094433 +n02111277 +n02132136 +n02119022 +n02091467 +n02106550 +n02422106 +n02091831 +n02120505 +n02104365 +n02086079 +n02112706 +n02098286 +n02095889 +n02484975 +n02137549 +n02500267 +n02129604 +n02090721 +n02396427 +n02108000 +n02391049 +n02412080 +n02108915 +n02480495 +n02110806 +n02128385 +n02107683 +n02085936 +n02094114 +n02087046 +n02100583 +n02096177 +n02494079 +n02105056 +n02101556 +n02123597 +n02481823 +n02105505 +n02088094 +n02085782 +n02489166 +n02364673 +n02114548 +n02134084 +n02480855 +n02090622 +n02113624 +n02093859 +n02403003 +n02097298 +n02108551 +n02493793 +n02107142 +n02096585 +n02107574 +n02107908 +n02086240 +n02102973 +n02112018 +n02093647 +n02397096 +n02437312 +n02483708 +n02097047 +n02106030 +n02099601 +n02093991 +n02110627 +n02106166 +n02326432 +n02108089 +n02097658 +n02088364 +n02111129 +n02100236 +n02486261 +n02115913 +n02486410 +n02487347 +n02099849 +n02108422 +n02104029 +n02492035 +n02110958 +n02099429 +n02094258 +n02099267 +n02395406 +n02112350 +n02109961 +n02101388 +n02113799 +n02095570 +n02128757 +n02101006 +n02115641 +n02097209 +n02342885 +n02097474 +n02120079 +n02095314 +n02088238 +n02408429 +n02133161 +n02328150 +n02410509 +n02492660 +n02398521 +n02112137 +n02510455 +n02093428 +n02105855 +n02111500 +n02085620 +n02123045 +n02490219 +n02099712 +n02109525 +n02454379 +n02111889 +n02088632 +n02090379 +n02443114 +n02361337 +n02105412 +n02483362 +n02437616 +n02107312 +n02325366 +n02091032 +n02129165 +n02102318 +n02100877 +n02074367 +n02504013 +n02363005 +n02102480 +n02113023 +n02086646 +n02497673 +n02087394 +n02127052 +n02116738 +n02488291 +n02091244 +n02114367 +n02130308 +n02089973 +n02105251 +n02134418 +n02093754 +n02106662 +n02444819 +n01882714 +n01871265 +n01872401 +n01877812 +n01873310 +n01883070 +n04086273 +n04507155 +n04147183 +n04254680 +n02672831 +n02219486 +n02317335 +n01968897 +n03452741 +n03642806 +n07745940 +n02690373 +n04552348 +n02692877 +n02782093 +n04266014 +n03344393 +n03447447 +n04273569 +n03662601 +n02951358 +n04612504 +n02981792 +n04483307 +n03095699 +n03673027 +n03947888 +n02687172 +n04347754 +n04606251 +n03478589 +n04389033 +n03773504 +n02860847 +n03218198 +n02835271 +n03792782 +n03393912 +n03895866 +n02797295 +n04204347 +n03791053 +n03384352 +n03272562 +n04310018 +n02704792 +n02701002 +n02814533 +n02930766 +n03100240 +n03594945 +n03670208 +n03770679 +n03777568 +n04037443 +n04285008 +n03444034 +n03445924 +n03785016 +n04252225 +n03345487 +n03417042 +n03930630 +n04461696 +n04467665 +n03796401 +n03977966 +n04065272 +n04335435 +n04252077 +n04465501 +n03776460 +n04482393 +n04509417 +n03538406 +n03599486 +n03868242 +n02804414 +n03125729 +n03131574 +n03388549 +n02870880 +n03018349 +n03742115 +n03016953 +n04380533 +n03337140 +n03891251 +n02791124 +n04429376 +n03376595 +n04099969 +n04344873 +n04447861 +n03179701 +n03982430 +n03201208 +n03290653 +n04550184 +n07742313 +n07747607 +n07749582 +n07753113 +n07753275 +n07753592 +n07754684 +n07760859 +n07768694 +n12267677 +n12620546 +n13133613 +n11879895 +n12144580 +n12768682 +n03854065 +n04515003 +n03017168 +n03249569 +n03447721 +n03720891 +n03721384 +n04311174 +n02787622 +n02992211 +n04536866 +n03495258 +n02676566 +n03272010 +n03110669 +n03394916 +n04487394 +n03494278 +n03840681 +n03884397 +n02804610 +n03838899 +n04141076 +n03372029 +n11939491 +n12057211 +n09246464 +n09468604 +n09193705 +n09472597 +n09399592 +n09421951 +n09256479 +n09332890 +n09428293 +n09288635 +n03498962 +n03041632 +n03658185 +n03954731 +n03995372 +n03649909 +n03481172 +n03109150 +n02951585 +n03970156 +n04154565 +n04208210 +n03967562 +n03000684 +n01514668 +n01514859 +n01518878 +n01530575 +n01531178 +n01532829 +n01534433 +n01537544 +n01558993 +n01560419 +n01580077 +n01582220 +n01592084 +n01601694 +n01608432 +n01614925 +n01616318 +n01622779 +n01795545 +n01796340 +n01797886 +n01798484 +n01806143 +n01806567 +n01807496 +n01817953 +n01818515 +n01819313 +n01820546 +n01824575 +n01828970 +n01829413 +n01833805 +n01843065 +n01843383 +n01847000 +n01855032 +n01855672 +n01860187 +n02002556 +n02002724 +n02006656 +n02007558 +n02009912 +n02009229 +n02011460 +n02012849 +n02013706 +n02018207 +n02018795 +n02025239 +n02027492 +n02028035 +n02033041 +n02037110 +n02017213 +n02051845 +n02056570 +n02058221 +n01484850 +n01491361 +n01494475 +n01496331 +n01498041 +n02514041 +n02536864 +n01440764 +n01443537 +n02526121 +n02606052 +n02607072 +n02643566 +n02655020 +n02640242 +n02641379 +n01664065 +n01665541 +n01667114 +n01667778 +n01669191 +n01675722 +n01677366 +n01682714 +n01685808 +n01687978 +n01688243 +n01689811 +n01692333 +n01693334 +n01694178 +n01695060 +n01704323 +n01697457 +n01698640 +n01728572 +n01728920 +n01729322 +n01729977 +n01734418 +n01735189 +n01737021 +n01739381 +n01740131 +n01742172 +n01744401 +n01748264 +n01749939 +n01751748 +n01753488 +n01755581 +n01756291 +n01629819 +n01630670 +n01631663 +n01632458 +n01632777 +n01641577 +n01644373 +n01644900 +n04579432 +n04592741 +n03876231 +n03483316 +n03868863 +n04251144 +n03691459 +n03759954 +n04152593 +n03793489 +n03271574 +n03843555 +n04332243 +n04265275 +n04330267 +n03467068 +n02794156 +n04118776 +n03841143 +n04141975 +n02708093 +n03196217 +n04548280 +n03544143 +n04355338 +n03891332 +n04328186 +n03197337 +n04317175 +n04376876 +n03706229 +n02841315 +n04009552 +n04356056 +n03692522 +n04044716 +n02879718 +n02950826 +n02749479 +n04090263 +n04008634 +n03085013 +n04505470 +n03126707 +n03666591 +n02666196 +n02977058 +n04238763 +n03180011 +n03485407 +n03832673 +n06359193 +n03496892 +n04428191 +n04004767 +n04243546 +n04525305 +n04179913 +n03602883 +n04372370 +n03532672 +n02974003 +n03874293 +n03944341 +n03992509 +n03425413 +n02966193 +n04371774 +n04067472 +n04040759 +n04019541 +n03492542 +n04355933 +n03929660 +n02965783 +n04258138 +n04074963 +n03208938 +n02910353 +n03476684 +n03627232 +n03075370 +n03874599 +n03804744 +n04127249 +n04153751 +n03803284 +n04162706 +n04228054 +n02948072 +n03590841 +n04286575 +n04456115 +n03814639 +n03933933 +n04485082 +n03733131 +n03794056 +n04275548 +n01768244 +n01770081 +n01770393 +n01773157 +n01773549 +n01773797 +n01774384 +n01774750 +n01775062 +n01776313 +n01784675 +n01990800 +n01978287 +n01978455 +n01980166 +n01981276 +n01983481 +n01984695 +n01985128 +n01986214 +n02165105 +n02165456 +n02167151 +n02168699 +n02169497 +n02172182 +n02174001 +n02177972 +n02190166 +n02206856 +n02226429 +n02229544 +n02231487 +n02233338 +n02236044 +n02256656 +n02259212 +n02264363 +n02268443 +n02268853 +n02276258 +n02277742 +n02279972 +n02280649 +n02281406 +n02281787 +n01910747 +n01914609 +n01917289 +n01924916 +n01930112 +n01943899 +n01944390 +n01945685 +n01950731 +n01955084 +n02319095 +n02321529 +n03584829 +n03297495 +n03761084 +n03259280 +n04111531 +n04442312 +n04542943 +n04517823 +n03207941 +n04070727 +n04554684 +n03133878 +n03400231 +n04596742 +n02939185 +n03063689 +n04398044 +n04270147 +n02699494 +n04486054 +n03899768 +n04311004 +n04366367 +n04532670 +n02793495 +n03457902 +n03877845 +n03781244 +n03661043 +n02727426 +n02859443 +n03028079 +n03788195 +n04346328 +n03956157 +n04081281 +n03032252 +n03529860 +n03697007 +n03065424 +n03837869 +n04458633 +n02980441 +n04005630 +n03461385 +n02776631 +n02791270 +n02871525 +n02927161 +n03089624 +n04200800 +n04443257 +n04462240 +n03388043 +n03042490 +n04613696 +n03216828 +n02892201 +n03743016 +n02788148 +n02894605 +n03160309 +n03000134 +n03930313 +n04604644 +n04326547 +n03459775 +n04239074 +n04501370 +n03792972 +n04149813 +n03530642 +n03961711 +n03903868 +n02814860 +n07711569 +n07720875 +n07714571 +n07714990 +n07715103 +n07716358 +n07716906 +n07717410 +n07717556 +n07718472 +n07718747 +n07730033 +n07734744 +n04209239 +n03594734 +n02971356 +n03485794 +n04133789 +n02747177 +n04125021 +n07579787 +n03814906 +n03134739 +n03404251 +n04423845 +n03877472 +n04120489 +n03062245 +n03014705 +n03717622 +n03777754 +n04493381 +n04476259 +n02777292 +n07693725 +n03998194 +n03617480 +n07590611 +n04579145 +n03623198 +n07248320 +n04277352 +n04229816 +n02823428 +n03127747 +n02877765 +n04435653 +n03724870 +n03710637 +n03920288 +n03379051 +n02807133 +n04399382 +n03527444 +n03983396 +n03924679 +n04532106 +n06785654 +n03445777 +n07613480 +n04350905 +n04562935 +n03325584 +n03045698 +n07892512 +n03250847 +n04192698 +n03026506 +n03534580 +n07565083 +n04296562 +n02869837 +n07871810 +n02799071 +n03314780 +n04141327 +n04357314 +n02823750 +n13052670 +n07583066 +n03637318 +n04599235 +n07802026 +n02883205 +n03709823 +n04560804 +n02909870 +n03207743 +n04263257 +n07932039 +n03786901 +n04479046 +n03873416 +n02999410 +n04367480 +n03775546 +n07875152 +n04591713 +n04201297 +n02916936 +n03240683 +n02840245 +n02963159 +n04370456 +n03991062 +n02843684 +n03482405 +n03942813 +n03908618 +n03902125 +n07584110 +n02730930 +n04023962 +n02769748 +n10148035 +n02817516 +n03908714 +n02906734 +n03788365 +n02667093 +n03787032 +n03980874 +n03141823 +n03976467 +n04264628 +n07930864 +n04039381 +n06874185 +n04033901 +n04041544 +n07860988 +n03146219 +n03763968 +n03676483 +n04209133 +n03782006 +n03857828 +n03775071 +n02892767 +n07684084 +n04522168 +n03764736 +n04118538 +n03887697 +n13044778 +n03291819 +n03770439 +n03124170 +n04487081 +n03916031 +n02808440 +n07697537 +n12985857 +n02917067 +n03938244 +n15075141 +n02978881 +n02966687 +n03633091 +n13040303 +n03690938 +n03476991 +n02669723 +n03220513 +n03127925 +n04584207 +n07880968 +n03937543 +n03000247 +n04418357 +n04590129 +n02795169 +n04553703 +n02783161 +n02802426 +n02808304 +n03124043 +n03450230 +n04589890 +n12998815 +n02992529 +n03825788 +n02790996 +n03710193 +n03630383 +n03347037 +n03769881 +n03871628 +n03733281 +n03976657 +n03535780 +n04259630 +n03929855 +n04049303 +n04548362 +n02979186 +n06596364 +n03935335 +n06794110 +n02825657 +n03388183 +n04591157 +n04540053 +n03866082 +n04136333 +n04026417 +n02865351 +n02834397 +n03888257 +n04235860 +n04404412 +n04371430 +n03733805 +n07920052 +n07873807 +n02895154 +n04204238 +n04597913 +n04131690 +n07836838 +n09835506 +n03443371 +n13037406 +n04336792 +n04557648 +n03187595 +n04254120 +n03595614 +n04146614 +n03598930 +n03958227 +n04069434 +n03188531 +n02786058 +n07615774 +n04525038 +n04409515 +n03424325 +n03223299 +n03680355 +n07614500 +n07695742 +n04033995 +n03710721 +n04392985 +n03047690 +n03584254 +n13054560 +n10565667 +n03950228 +n03729826 +n02837789 +n04254777 +n02988304 +n03657121 +n04417672 +n04523525 +n02815834 +n09229709 +n07697313 +n03888605 +n03355925 +n03063599 +n04116512 +n04325704 +n07831146 +n03255030 +n00483313 +n02432291 +n02356381 +n02377388 +n04028764 +n04381587 +n02279257 +n04168199 +n00445055 +n02461128 +n03626760 +n04313503 +n00451635 +n02509515 +n04224842 +n09403734 +n02769290 +n13054073 +n03163222 +n00464478 +n03087069 +n04477219 +n03445617 +n00449054 +n00483705 +n04395106 +n03389611 +n04285965 +n04166281 +n04003856 +n03696301 +n00475787 +n04587404 +n09218641 +n02276355 +n03592669 +n04459909 +n04492375 +n09447666 +n00463543 +n04148703 +n04591517 +n03970546 +n04297750 +n02782778 +n02383231 +n03693474 +n02277094 +n03766044 +n02056228 +n03394272 +n03047052 +n00434075 +n04185946 +n02411999 +n03858418 +n12833149 +n02836035 +n03108853 +n04587559 +n04138261 +n02278024 +n03063485 +n02774921 +n09475044 +n02811204 +n03329302 +n04026813 +n03986562 +n03379204 +n03426134 +n02790669 +n03487090 +n03548402 +n08614632 +n04054361 +n03421485 +n03302671 +n03098959 +n02970408 +n03772584 +n03064935 +n09415584 +n11715430 +n12024445 +n02710201 +n03475581 +n13142504 +n03396074 +n03211789 +n03914337 +n03678558 +n03233123 +n00453396 +n00454395 +n00440382 +n04289027 +n00445226 +n11953610 +n04128413 +n00480211 +n00470966 +n12547503 +n03085219 +n02275773 +n02692086 +n04257790 +n00448748 +n02686379 +n12328567 +n03432129 +n03859000 +n12091377 +n02124313 +n00442847 +n04603399 +n03114379 +n02920369 +n03818343 +n02946127 +n02978055 +n12914923 +n02705429 +n00448232 +n12882945 +n04289690 +n07606669 +n02056728 +n11848479 +n03046921 +n12282933 +n02867966 +n12821505 +n02812949 +n04545305 +n02699770 +n04395651 +n02900160 +n04099003 +n02054711 +n12606545 +n03356858 +n01859190 +n03643737 +n02962200 +n03123553 +n09361517 +n02793089 +n00449517 +n02783994 +n10117851 +n12038585 +n04383839 +n10142391 +n07719213 +n03536122 +n02472987 +n03454536 +n11728099 +n02392824 +n03795758 +n04282872 +n00448872 +n02404432 +n03797182 +n03029197 +n03665924 +n12477163 +n02769963 +n03863262 +n01532325 +n04165409 +n04593077 +n04473108 +n03577090 +n09988063 +n00446804 +n03931765 +n00475014 +n02700064 +n03240892 +n12475242 +n11735053 +n04053508 +n02852173 +n02382750 +n03823111 +n04543772 +n04112147 +n04433585 +n03175189 +n03596543 +n00445685 +n03307792 +n04589593 +n01814217 +n02993368 +n04303497 +n02811350 +n03355768 +n03699591 +n04590553 +n01893825 +n12726670 +n09916348 +n11544015 +n01318894 +n02133704 +n02367492 +n04506289 +n02069974 +n01900150 +n03207835 +n03363549 +n02831595 +n04970470 +n04160847 +n03767203 +n03928814 +n02302969 +n02918595 +n10401331 +n04231272 +n03717447 +n03063968 +n03380724 +n00825773 +n09988493 +n02740300 +n04539794 +n04121511 +n01323599 +n12937130 +n02428508 +n02980036 +n12061380 +n01887787 +n04214046 +n01787835 +n00466630 +n02979290 +n03927091 +n03231368 +n03904657 +n04469003 +n04196502 +n02122948 +n04544325 +n07868340 +n13876561 +n11925898 +n12158443 +n01595450 +n12454705 +n02069412 +n09618957 +n02357111 +n00451563 +n04197110 +n02276902 +n03111296 +n03909020 +n12303083 +n02082791 +n01956764 +n04269822 +n04207343 +n02433318 +n01888181 +n12682668 +n01592387 +n09793141 +n00466273 +n04026180 +n06255081 +n12172364 +n10145590 +n12311579 +n12173912 +n03822171 +n03140292 +n03027625 +n02739427 +n02060133 +n02431785 +n03219010 +n00447957 +n11910271 +n03620967 +n12547215 +n02409508 +n04290079 +n12329260 +n13901858 +n02008497 +n10304914 +n04524142 +n04279462 +n04233124 +n09733793 +n12822115 +n09475179 +n10151760 +n03418618 +n12858397 +n07735510 +n03549473 +n10098245 +n03653583 +n10604380 +n03375575 +n03885293 +n01527347 +n03237340 +n02760658 +n11953038 +n03187268 +n03004275 +n02393161 +n11965218 +n08580944 +n03938725 +n03900979 +n04144241 +n03760310 +n02376679 +n03237992 +n09432283 +n02379908 +n09918554 +n04041747 +n12012111 +n10331167 +n01612122 +n10147935 +n07691539 +n11669786 +n09403427 +n01935395 +n09903501 +n04439585 +n04459018 +n02780704 +n03720163 +n12899752 +n04118635 +n03404149 +n02429456 +n00449168 +n04516354 +n04317833 +n12075299 +n07878647 +n09438940 +n03361550 +n02027357 +n04317976 +n03092883 +n04526964 +n03985069 +n03610682 +n04028581 +n02277268 +n09433839 +n03846431 +n03919289 +n10146104 +n10260706 +n02686227 +n03321103 +n00444846 +n01558307 +n01595168 +n03919096 +n11844892 +n04260364 +n02750070 +n03034244 +n03002096 +n04273972 +n11814584 +n04605321 +n07745466 +n02922798 +n03361380 +n12651229 +n08521623 +n04498389 +n00453313 +n04967882 +n12024690 +n03934656 +n02685082 +n04501550 +n09972458 +n03055418 +n07763629 +n03902756 +n09938449 +n09712696 +n02387346 +n03133415 +n07711080 +n03129753 +n03524150 +n02275560 +n03993053 +n03438661 +n11939180 +n00466524 +n11753355 +n03456024 +n03421324 +n07890540 +n11720643 +n02057035 +n00453126 +n04453037 +n01540832 +n03546235 +n03370387 +n02041875 +n02871439 +n03262072 +n01786646 +n02430830 +n02799175 +n05262422 +n03854722 +n12817694 +n04449966 +n01564773 +n02034971 +n03490119 +n02822579 +n07879953 +n04110178 +n04963588 +n04252653 +n01565078 +n02389128 +n02779435 +n10645017 +n04582205 +n08573842 +n10146002 +n03892178 +n03119396 +n03813078 +n07866868 +n03160740 +n03371875 +n02417387 +n03904782 +n03098688 +n02902687 +n01828556 +n04401680 +n04590933 +n01575401 +n07693048 +n02901114 +n03047941 +n04355511 +n11849871 +n10738111 +n03122073 +n12052787 +n01594004 +n01549886 +n02824058 +n03506184 +n11487732 +n12574866 +n12948053 +n10091450 +n00470554 +n00326094 +n12093329 +n04438897 +n07818995 +n12828791 +n13901321 +n10613996 +n10159533 +n02669295 +n02843158 +n06415688 +n14858292 +n09813219 +n12485653 +n03200231 +n02089468 +n03935234 +n01539925 +n12428076 +n10439373 +n01536644 +n02694662 +n02123242 +n03002711 +n03363749 +n02669534 +n03451798 +n11927215 +n02679257 +n09475925 +n10015485 +n12422129 +n03946162 +n02377291 +n07871720 +n12622297 +n12782915 +n01579260 +n11838916 +n10267311 +n12824053 +n03340723 +n02276749 +n04439712 +n02126139 +n04188179 +n02386853 +n07942152 +n02499316 +n04324387 +n10635788 +n04234887 +n12237641 +n03713436 +n04960582 +n04076713 +n01646292 +n03947798 +n02840134 +n04476972 +n09822830 +n03551395 +n04533802 +n02918964 +n00474657 +n12932966 +n01615458 +n01806364 +n12458550 +n11784497 +n03557360 +n10638922 +n09889941 +n10689306 +n03358172 +n04295571 +n06596607 +n11853356 +n00482122 +n11760785 +n03150232 +n11778257 +n03059685 +n10105733 +n04104384 +n07691237 +n04326676 +n07684938 +n12666965 +n04177820 +n13918387 +n03398153 +n03914438 +n09932098 +n02988486 +n02977619 +n03317788 +n03484487 +n02988679 +n04062428 +n02568087 +n12866162 +n04227144 +n07875436 +n04082886 +n11753700 +n00470682 +n02122298 +n10145239 +n12755727 +n04214282 +n01852671 +n02378969 +n04108822 +n10382825 +n12392549 +n03973839 +n12258885 +n11782761 +n12389501 +n02940570 +n03405595 +n02969323 +n03207630 +n10169147 +n03805725 +n09847543 +n02415253 +n07880080 +n04305572 +n02042180 +n07565161 +n02871147 +n04438507 +n04445154 +n07842433 +n12029635 +n09750282 +n09621232 +n01858906 +n02761206 +n03986355 +n12591351 +n13916721 +n02905036 +n11894770 +n02377603 +n12924623 +n03950899 +n09454153 +n10247358 +n05261310 +n11943660 +n10804287 +n03560430 +n01756089 +n10618342 +n04283378 +n13926786 +n04238321 +n04393549 +n04461879 +n03502200 +n00440941 +n03494706 +n04148579 +n13902336 +n02780815 +n10726031 +n04124098 +n12344483 +n04384910 +n07681450 +n02030837 +n04059157 +n09247410 +n02714751 +n08633683 +n04520784 +n10141732 +n12371439 +n04499062 +n02931148 +n07609632 +n04536335 +n02874537 +n03013438 +n11786539 +n11690455 +n07600696 +n00478262 +n00466712 +n03399677 +n12441183 +n07895962 +n11966083 +n02990373 +n04241249 +n02068541 +n12513933 +n02356977 +n04252560 +n04087826 +n03455488 +n07619409 +n09787534 +n03680942 +n00446980 +n12384839 +n03416900 +n07821758 +n11853813 +n01606522 +n11780148 +n04969242 +n12413880 +n04130257 +n01322604 +n03061211 +n01959492 +n02842573 +n04313628 +n03815149 +n02445394 +n08547544 +n03222176 +n04070003 +n03075768 +n09695979 +n02877266 +n08583292 +n02870676 +n03657511 +n01621635 +n04284341 +n04136161 +n02836174 +n10247880 +n01744100 +n02882894 +n03408444 +n03411079 +n02366959 +n04399158 +n04542715 +n02787435 +n04251701 +n13863020 +n07890226 +n12245319 +n12849952 +n11626826 +n00887544 +n03140431 +n03519387 +n03855604 +n07906111 +n02054036 +n11954161 +n03038281 +n00450998 +n12136392 +n02119477 +n04356925 +n02406647 +n04450133 +n12545635 +n01565599 +n02028900 +n07817024 +n02971167 +n04309049 +n02678897 +n12795555 +n11769803 +n01904886 +n02079851 +n12189987 +n04581829 +n12098403 +n01839330 +n12587803 +n03652932 +n08628141 +n03544238 +n04513827 +n01847806 +n03132076 +n10243137 +n03621377 +n10530959 +n14765422 +n04968139 +n12950314 +n02064816 +n02846511 +n10513823 +n11772408 +n03341297 +n03492922 +n03683606 +n02894337 +n02365480 +n09846755 +n03495039 +n01317813 +n12610328 +n02157206 +n01588002 +n03914831 +n03659686 +n10406765 +n09205509 +n02870526 +n07954211 +n10578471 +n11646694 +n03115762 +n07762913 +n12056758 +n12305986 +n11845913 +n02835915 +n02831237 +n07927512 +n12171098 +n02073831 +n07605040 +n02885462 +n02768114 +n04450994 +n11844371 +n03963645 +n02956699 +n02029378 +n01528396 +n10005934 +n04465666 +n04390977 +n11882074 +n03831382 +n04605163 +n06276501 +n02944075 +n05258051 +n07901457 +n12683571 +n02205219 +n13235503 +n02388735 +n03941231 +n14919819 +n12816508 +n11536673 +n13895262 +n02903204 +n10137825 +n07841345 +n07893253 +n01850192 +n07769731 +n11773987 +n03539678 +n12938193 +n10802507 +n03089879 +n00477392 +n01828096 +n09263912 +n13653902 +n04579667 +n01322983 +n08579352 +n07587023 +n07756951 +n07870167 +n10588357 +n01606809 +n13864035 +n02802544 +n07591961 +n02979399 +n04144539 +n02416820 +n11769176 +n09743792 +n09732170 +n04972451 +n13918274 +n01847089 +n01859689 +n04208065 +n07617051 +n10674713 +n07914271 +n07887461 +n03736064 +n03644858 +n03878963 +n04040247 +n07891433 +n01611969 +n07587618 +n02689144 +n10049363 +n04059516 +n10313239 +n03115400 +n01519563 +n01533893 +n03850245 +n11733548 +n03372549 +n01884834 +n02839110 +n07887192 +n03617312 +n07886463 +n03103396 +n07764847 +n01855476 +n07808587 +n12858871 +n03632729 +n10209731 +n04141712 +n03978686 +n03225988 +n00475273 +n09224725 +n04966543 +n01322221 +n03649674 +n13154494 +n03948830 +n03320519 +n03723267 +n07869611 +n12342498 +n01827793 +n03145719 +n11821184 +n11956348 +n11857875 +n10339717 +n09450163 +n10756148 +n01591301 +n07915094 +n04422727 +n09719309 +n03349469 +n03389889 +n10718131 +n04298661 +n09747495 +n03676623 +n03547229 +n03062015 +n10734394 +n07817315 +n02852360 +n01850553 +n02952585 +n03587205 +n02009750 +n01540090 +n02947660 +n03656957 +n03378174 +n02508213 +n01572489 +n12008487 +n12185859 +n11691046 +n01323355 +n05262534 +n00448126 +n02432983 +n12038406 +n03883385 +n02411206 +n01643896 +n10159045 +n11675025 +n01803362 +n02009508 +n07920349 +n04098513 +n11617272 +n09913455 +n12390314 +n04171208 +n02995345 +n10634849 +n03173929 +n02749953 +n11845793 +n12796022 +n11955153 +n11816829 +n03032453 +n11984542 +n02992795 +n03712111 +n02873733 +n02759387 +n14915184 +n02381364 +n12686274 +n07857731 +n04518764 +n03010473 +n02418465 +n02359556 +n07894799 +n04104770 +n04335209 +n01848976 +n02006063 +n04454908 +n03002948 +n04220250 +n09923561 +n04102162 +n11958080 +n04598965 +n10173410 +n03067339 +n02003204 +n12686676 +n11986511 +n02311617 +n03367059 +n02761557 +n05578095 +n04041069 +n10575463 +n03325941 +n10082043 +n01806297 +n09691729 +n04593866 +n01813088 +n01625562 +n03906224 +n01652026 +n10236304 +n04102618 +n04321453 +n07820145 +n01575117 +n12788854 +n07823698 +n04206225 +n03216710 +n02421449 +n03343737 +n07560903 +n02872529 +n11989869 +n12071744 +n06278475 +n04492749 +n02920259 +n03798061 +n02420509 +n03316105 +n12052447 +n03974915 +n02904803 +n03430418 +n12291959 +n06892775 +n03875806 +n07903841 +n10282482 +n02683323 +n07862348 +n01849157 +n04469813 +n09944022 +n03342127 +n07592481 +n02936402 +n02405929 +n10002760 +n02537716 +n05259914 +n01560280 +n12694486 +n07879350 +n02377063 +n03637181 +n03409297 +n01607812 +n02808185 +n09239302 +n12055516 +n09712448 +n02859184 +n12772908 +n02735538 +n10333838 +n12336092 +n02386968 +n04613939 +n00452864 +n04535524 +n03174731 +n04189816 +n07607605 +n12909917 +n02387722 +n02960690 +n07715221 +n02407071 +n10667477 +n09398076 +n04236809 +n01904806 +n01610552 +n12373100 +n12771390 +n04122685 +n07804771 +n15102455 +n03469175 +n03746005 +n02536456 +n03505667 +n11816336 +n09376198 +n10572706 +n03464053 +n02869155 +n07816164 +n04969798 +n02942349 +n14820180 +n01623615 +n12676703 +n03369276 +n03650551 +n02010272 +n02976123 +n01852400 +n02196119 +n04132158 +n03238586 +n07639069 +n03313333 +n10542761 +n12215022 +n00455173 +n10019406 +n12899537 +n04277826 +n09906449 +n04549629 +n11508382 +n15090065 +n10289462 +n04540255 +n02723165 +n04335693 +n01536334 +n03107488 +n12782530 +n14785065 +n02974348 +n09874862 +n04479939 +n03309465 +n09902954 +n12092417 +n03425595 +n12433081 +n07806774 +n12462805 +n01314781 +n10192839 +n01622120 +n07807171 +n03261019 +n02843553 +n04287747 +n02324587 +n09915434 +n01818299 +n01592694 +n03826186 +n03607659 +n01527917 +n03628511 +n02005399 +n04204081 +n02052775 +n04403413 +n03914106 +n12811027 +n01872772 +n04555700 +n02004855 +n04602762 +n02713003 +n04406817 +n11934807 +n03336282 +n09684901 +n03836976 +n11959862 +n03062336 +n03506028 +n04503413 +n07819896 +n03205669 +n11902200 +n07685218 +n03046133 +n10261624 +n10303814 +n03676087 +n04023695 +n07587111 +n07764155 +n01504179 +n03794136 +n03389761 +n13901211 +n02784124 +n04488530 +n02807731 +n07898443 +n04981658 +n04177755 +n03649161 +n04125257 +n10135129 +n03653110 +n10560106 +n07735687 +n03511333 +n11960245 +n03301568 +n03878066 +n10746931 +n04223299 +n04237423 +n07888229 +n01819734 +n12312728 +n09981939 +n03727465 +n13882276 +n02993194 +n11971927 +n09713108 +n03581125 +n09718936 +n14698884 +n03005285 +n03540914 +n03359436 +n03934042 +n07569644 +n04964878 +n07890068 +n07580253 +n01538630 +n03132666 +n03259009 +n02796318 +n12703190 +n01464844 +n11792029 +n04270371 +n13102775 +n02933649 +n02387254 +n02890188 +n04335886 +n04358491 +n02786837 +n03885194 +n04001265 +n03438071 +n10375402 +n02997910 +n03326795 +n00470830 +n02734725 +n03494537 +n08376250 +n07743544 +n02991847 +n04246271 +n04156140 +n04381073 +n07732168 +n04951071 +n07977870 +n04334599 +n02838728 +n03326948 +n11723227 +n08182379 +n03686924 +n03821518 +n02382204 +n02080415 +n11788727 +n07732636 +n03860404 +n03898395 +n07867324 +n04392113 +n13237188 +n03263076 +n07843636 +n04968056 +n04397027 +n03320421 +n06267564 +n02880842 +n04115456 +n13862407 +n10289039 +n03128248 +n01457852 +n01536035 +n04579056 +n03937931 +n03036022 +n01804163 +n09913593 +n12841007 +n03115897 +n03256032 +n02475669 +n07924443 +n03061505 +n10001481 +n03600722 +n07842308 +n10696508 +n04215402 +n10588074 +n03614782 +n03995535 +n12091953 +n04113194 +n10092978 +n03011741 +n04381860 +n07819769 +n07905474 +n03288500 +n04225987 +n13223710 +n02879087 +n02920083 +n08640739 +n03362890 +n03996849 +n03849814 +n09694664 +n02407390 +n02910864 +n02388917 +n01668665 +n07616046 +n02932891 +n10553235 +n03652729 +n01615703 +n12801781 +n12164656 +n05302499 +n03801760 +n03332271 +n02901793 +n03941417 +n09833441 +n01623110 +n02807523 +n10598181 +n03725600 +n10368528 +n04116098 +n12719944 +n02045864 +n02173373 +n02811059 +n04479823 +n07816398 +n10572889 +n04142731 +n07687381 +n02799323 +n07865484 +n01858845 +n12684379 +n01842235 +n09242389 +n02028727 +n03527565 +n03438863 +n15019030 +n13907272 +n09659039 +n04251791 +n03683995 +n04137217 +n04389430 +n09785659 +n02016816 +n03124590 +n01859325 +n03138669 +n02999936 +n11926365 +n12686077 +n03517760 +n09734450 +n04563413 +n12074867 +n01564217 +n12521394 +n06267893 +n03594148 +n04139395 +n12369309 +n01544389 +n12048056 +n04524941 +n03016868 +n03653740 +n02795528 +n03687137 +n03766935 +n03361297 +n04263502 +n10043491 +n03446268 +n01994910 +n03891538 +n10091564 +n10226413 +n02755140 +n03500389 +n10237196 +n03625646 +n06596474 +n03360300 +n09730824 +n10732010 +n04469514 +n02904927 +n04961331 +n02936570 +n03680858 +n07585758 +n09199101 +n04050933 +n03712337 +n03911513 +n01556182 +n03102371 +n07928887 +n12133462 +n03974070 +n03971218 +n03292475 +n03425241 +n03440216 +n11995092 +n02894158 +n02918112 +n10568358 +n11524451 +n03169176 +n04100519 +n07588193 +n06883725 +n02860640 +n07762114 +n04082710 +n07896893 +n10167152 +n03287351 +n02788021 +n08494231 +n01560935 +n03249342 +n04564581 +n09349648 +n07704205 +n03510244 +n12127460 +n09945745 +n11719286 +n11613459 +n12656369 +n03824381 +n07655263 +n09894143 +n04964001 +n02161457 +n07654298 +n07930433 +n02979074 +n02026948 +n13914608 +n07611267 +n02843276 +n09827363 +n10259780 +n04432662 +n11715678 +n12388858 +n03057920 +n10465451 +n03855214 +n07728181 +n09835348 +n03549732 +n04589325 +n03491032 +n00452034 +n03948242 +n01456756 +n07921615 +n02809105 +n12889713 +n07586894 +n07734879 +n07905979 +n12847374 +n12129134 +n02122580 +n04028074 +n02911332 +n09251407 +n07697825 +n04597309 +n02800213 +n03480579 +n07621618 +n04170933 +n03743279 +n01916481 +n04037220 +n10748620 +n02708433 +n12007196 +n02561381 +n04103769 +n03030880 +n04413969 +n03911658 +n04590746 +n00476389 +n04331639 +n07725789 +n01792429 +n02949542 +n07686720 +n04064862 +n04447028 +n01713764 +n09854218 +n04032603 +n04405907 +n15093298 +n04385536 +n11954345 +n01560793 +n09249034 +n03784270 +n03436549 +n01324610 +n02379183 +n07616487 +n04119478 +n03309356 +n12865037 +n12850168 +n04250850 +n03024064 +n04412097 +n02982515 +n00450070 +n10175248 +n11847169 +n12276872 +n12870891 +n10229883 +n10505613 +n03482252 +n09300905 +n02919890 +n07617611 +n10283170 +n01607962 +n01671125 +n07894551 +n04561287 +n00005787 +n10025635 +n02850732 +n03732020 +n02036711 +n07907429 +n03797896 +n03004824 +n12011620 +n10300303 +n03105467 +n03767745 +n07868508 +n07868200 +n03788047 +n07886057 +n04559451 +n09845401 +n04373704 +n02676938 +n02565324 +n02667478 +n02122878 +n03244047 +n01747589 +n04320973 +n13205058 +n02379430 +n11959632 +n10183931 +n07683490 +n10055410 +n04370288 +n03273551 +n13900422 +n07899434 +n04053677 +n07740461 +n11879722 +n04282494 +n02981911 +n03449451 +n07581249 +n03965456 +n11808468 +n13881644 +n11725973 +n12091213 +n13193856 +n02873520 +n02754656 +n02431976 +n01324431 +n02385214 +n01888411 +n12680864 +n07731284 +n04337287 +n07631926 +n02549248 +n04395024 +n07585557 +n02776825 +n09460046 +n12023108 +n00475403 +n10098517 +n07902336 +n03683708 +n02412210 +n04397452 +n04583212 +n13869547 +n03632577 +n01616086 +n02763901 +n08256735 +n03015478 +n02084732 +n12178896 +n11966215 +n07605380 +n13869788 +n01847170 +n07744811 +n01854700 +n00444937 +n10422405 +n07801892 +n09688804 +n11879054 +n02802215 +n07908411 +n07822518 +n01558594 +n07935737 +n10730728 +n04436329 +n04294879 +n04972350 +n12911440 +n13886260 +n07578093 +n02537525 +n03703730 +n09607630 +n13865904 +n02360282 +n11731659 +n04126066 +n04212165 +n11618290 +n07588574 +n09269472 +n11896722 +n02892304 +n03487642 +n02028342 +n03321563 +n03135030 +n03522100 +n03253886 +n04095109 +n06470073 +n12603449 +n10644598 +n10260800 +n01535469 +n09696456 +n03553019 +n03963198 +n11918473 +n10314517 +n03002341 +n07574923 +n10421470 +n05716342 +n03244231 +n01730563 +n11691857 +n12807251 +n12345899 +n03142679 +n01531512 +n12307240 +n07835457 +n04535370 +n00451186 +n12481458 +n03434188 +n09734185 +n04578934 +n04167346 +n02747802 +n03459328 +n03301940 +n01562014 +n07690431 +n10642596 +n03696065 +n12781940 +n02759257 +n04392764 +n04218564 +n03499907 +n01536780 +n09751895 +n03235042 +n04570815 +n12070381 +n09448690 +n07625061 +n10178216 +n04560113 +n09457979 +n03858085 +n02421792 +n02944579 +n10085869 +n09718811 +n04103206 +n04239786 +n04501947 +n01321123 +n02390015 +n03964495 +n01554448 +n02925107 +n03028596 +n12483625 +n03227317 +n10701644 +n11968704 +n03900393 +n01851038 +n02276078 +n03132776 +n07585906 +n04480033 +n07880458 +n12887293 +n07921239 +n03307037 +n04595028 +n04244379 +n13131028 +n10313724 +n09436708 +n02694045 +n09941787 +n00449796 +n01817346 +n07928696 +n03401279 +n12901724 +n11646167 +n07682477 +n09415671 +n07900225 +n03607029 +n02692232 +n11834654 +n07935379 +n12437930 +n03762434 +n07922764 +n03595523 +n04546340 +n10686885 +n03516844 +n03767112 +n09896685 +n03859608 +n03149686 +n07920872 +n12388143 +n10406391 +n04233715 +n04373089 +n02023992 +n01947396 +n12115180 +n00479616 +n03962852 +n02392434 +n12414035 +n14976871 +n03201776 +n10665587 +n03600285 +n04402449 +n08539072 +n03629231 +n12860365 +n03488438 +n03337383 +n12455950 +n10384392 +n02953455 +n03101796 +n07919572 +n03233744 +n01578180 +n01756508 +n04556533 +n02962843 +n02882190 +n03731483 +n01850873 +n05260240 +n03111177 +n09836519 +n03030557 +n11789066 +n02788572 +n07903101 +n04067818 +n07840804 +n01567678 +n12427184 +n03333610 +n02416964 +n10607291 +n07936548 +n05451384 +n02968074 +n07605597 +n02704949 +n07609215 +n01951274 +n07696977 +n03180384 +n04303357 +n03291741 +n02207805 +n10123844 +n03420345 +n12384227 +n02758863 +n02047975 +n03978966 +n03549199 +n04275175 +n09294877 +n09836343 +n11970586 +n02010728 +n10369317 +n12681893 +n03192543 +n12413165 +n12174521 +n11916696 +n10042845 +n07822197 +n04968749 +n10323634 +n12849416 +n02814774 +n05538625 +n03078802 +n12230794 +n07726095 +n03051249 +n12005656 +n11876432 +n12164881 +n09711435 +n01622483 +n09896170 +n07684289 +n03368352 +n07910048 +n03159535 +n00466377 +n01541386 +n11647703 +n09752023 +n07903731 +n12249542 +n03794798 +n11786131 +n02852043 +n10493685 +n09846894 +n01752585 +n01536186 +n07618432 +n09859152 +n02065026 +n02382635 +n07867616 +n03885788 +n04255586 +n03275681 +n11961100 +n12485981 +n04495698 +n03293741 +n13902048 +n03254862 +n07903962 +n01594787 +n11962272 +n03284886 +n07842202 +n10157128 +n02405302 +n04443766 +n06266633 +n02519862 +n01487506 +n03373943 +n04247876 +n04327204 +n03349771 +n09260907 +n10092794 +n12223764 +n03504723 +n11926833 +n01820052 +n13032381 +n03889871 +n03209359 +n04608923 +n15093137 +n15091304 +n03688405 +n09905185 +n03543112 +n11611356 +n03885028 +n03234164 +n07594066 +n02396014 +n03456186 +n09874725 +n11601333 +n02917521 +n03055857 +n02804123 +n12352844 +n12866002 +n09858165 +n12037691 +n02565072 +n04477387 +n02008643 +n07867021 +n04119360 +n09893191 +n02944146 +n12435649 +n13197274 +n04974859 +n07751004 +n12003696 +n02762508 +n02680512 +n01743086 +n06998748 +n10607478 +n07613815 +n01559477 +n01859852 +n03239054 +n04466871 +n05263183 +n13173882 +n07897438 +n12427757 +n04400737 +n03291963 +n07682808 +n11692265 +n04130143 +n09445289 +n07696839 +n03835197 +n12821895 +n09734639 +n03365374 +n04305210 +n04962240 +n09871867 +n07897750 +n07616386 +n09443281 +n03641569 +n13882563 +n07680761 +n10498816 +n04034262 +n03533014 +n07928790 +n07690152 +n10060352 +n04124370 +n12453186 +n04509171 +n03013580 +n10604979 +n12515711 +n04971211 +n07693223 +n03786715 +n07894703 +n02761834 +n04232800 +n03437741 +n04045644 +n14976759 +n03042697 +n12557681 +n06275095 +n11678010 +n01586941 +n07684517 +n07822845 +n03483823 +n09951616 +n03180865 +n07861557 +n03644378 +n12848499 +n11962667 +n03886762 +n04238128 +n11979964 +n13915113 +n12791329 +n12457091 +n03341153 +n10267865 +n03484576 +n10186216 +n07612137 +n03843438 +n11807525 +n11931540 +n02027897 +n07614730 +n04116294 +n03469903 +n10017272 +n03688605 +n07860103 +n03981566 +n01888045 +n03345837 +n11998888 +n02071636 +n02726017 +n04310157 +n04607869 +n01622959 +n08524735 +n03119203 +n12031927 +n03610524 +n02807616 +n04056180 +n03233905 +n03374473 +n14810561 +n11944954 +n03121431 +n09750891 +n08505018 +n10727171 +n12357485 +n12571781 +n12067193 +n07586604 +n02086753 +n03548086 +n02560110 +n07804900 +n02880393 +n04208427 +n12931542 +n01594968 +n05218119 +n03520493 +n03727605 +n12687698 +n03612965 +n04135315 +n07730320 +n10540114 +n07599911 +n01323493 +n02115096 +n04590263 +n12043836 +n02861387 +n09836786 +n04966941 +n02816768 +n13131618 +n10701962 +n02919792 +n03442597 +n04325041 +n03333129 +n04091693 +n04950952 +n10631309 +n04177931 +n13234678 +n01970667 +n07748416 +n07893642 +n07691650 +n03660909 +n04145863 +n11945514 +n10334009 +n12336973 +n03954393 +n04558478 +n09899929 +n03487533 +n07816575 +n07877187 +n07863547 +n01603812 +n02098906 +n04973585 +n03674440 +n04371050 +n12243109 +n07871234 +n02928049 +n07574504 +n07889274 +n12141167 +n04543996 +n03080633 +n03423479 +n07879659 +n04380916 +n10514429 +n07584423 +n04009801 +n12479537 +n07606538 +n07698543 +n12353754 +n10132035 +n03367545 +n04245508 +n09811852 +n02024763 +n04052442 +n10120330 +n12352639 +n12606438 +n07752966 +n09772930 +n02535759 +n11737534 +n10345015 +n12427566 +n09705784 +n04112654 +n02985963 +n03758089 +n12953484 +n07906572 +n02881757 +n12739332 +n03718458 +n03407865 +n07775050 +n03210552 +n09452395 +n09789566 +n10566072 +n10559996 +n07826930 +n12414932 +n01887474 +n03026907 +n07751148 +n10223177 +n03957420 +n03788601 +n12244819 +n12421137 +n04266162 +n10038409 +n02981024 +n03228967 +n11825351 +n12058822 +n11963932 +n03041449 +n03046029 +n07590502 +n02932523 +n02152881 +n04970398 +n07887967 +n12812478 +n12421917 +n02708711 +n11870747 +n04290507 +n07934282 +n01608265 +n12070583 +n03205574 +n02305085 +n07866015 +n02960903 +n10098624 +n00481803 +n07938007 +n02693246 +n03923379 +n04103665 +n11792742 +n12489815 +n04971313 +n01668892 +n01055165 +n03215508 +n12104501 +n07899292 +n12822955 +n07713074 +n03842012 +n02449350 +n07868955 +n02835829 +n12283542 +n04525584 +n07910656 +n11625003 +n03987266 +n02805983 +n15091846 +n09736945 +n04973816 +n02439398 +n01519873 +n07899003 +n03019938 +n07582152 +n01885498 +n12108871 +n02934451 +n04327682 +n07696625 +n09750770 +n12084890 +n03960374 +n07585107 +n01570839 +n11905392 +n06277135 +n07842044 +n03751269 +n04398951 +n12861892 +n12649539 +n07596967 +n07580592 +n12845413 +n07690739 +n07804657 +n04334105 +n03779128 +n03268918 +n03066359 +n02744323 +n12596148 +n04272389 +n07832416 +n10210911 +n01548865 +n03221351 +n15091669 +n07878926 +n07607967 +n12171966 +n02846141 +n07576781 +n02922292 +n10092643 +n01732614 +n02578771 +n02864593 +n03537241 +n09635534 +n03268645 +n07852833 +n13873917 +n12640839 +n03506727 +n10536416 +n09976429 +n10692482 +n07600285 +n04156946 +n07818689 +n02605703 +n02710429 +n02890351 +n03408054 +n03121298 +n02731629 +n12450840 +n04061681 +n10153414 +n07648913 +n07891309 +n01562265 +n14973585 +n01610226 +n06267991 +n03302938 +n07822323 +n07826091 +n02764398 +n10406266 +n09282208 +n01734104 +n04283096 +n03530910 +n11542137 +n02610664 +n03856012 +n01531811 +n07862611 +n11625632 +n12643313 +n02469248 +n03333711 +n02907082 +n02122430 +n01559804 +n09744161 +n10187990 +n12015525 +n07844867 +n07887304 +n02878425 +n02009380 +n11448153 +n10655594 +n12566954 +n11901977 +n03999160 +n02389779 +n07928488 +n12785889 +n04281375 +n03745146 +n03224603 +n04594828 +n12835331 +n09715427 +n11615026 +n09972010 +n04038231 +n02379329 +n03445326 +n10753442 +n04249882 +n11727738 +n07866723 +n04282992 +n11621281 +n01566645 +n03919430 +n11980682 +n03480719 +n11625804 +n10467395 +n09436444 +n07867751 +n03684611 +n03788498 +n12062626 +n07808904 +n07690585 +n03865557 +n10711766 +n10465831 +n04380255 +n12166128 +n04432203 +n07892418 +n10432441 +n12991184 +n04209613 +n04459773 +n09666883 +n07807472 +n09873899 +n12939874 +n04545748 +n09637339 +n07919441 +n03987376 +n03645577 +n03437430 +n10671613 +n02964843 +n09707289 +n11700058 +n03877351 +n03518445 +n07643200 +n02140049 +n12683791 +n12418221 +n04154152 +n03397947 +n03238131 +n11851839 +n04545858 +n07744682 +n02995871 +n07593199 +n03543394 +n10293332 +n12658481 +n11599324 +n02705201 +n03920867 +n08249459 +n02876084 +n03937835 +n01397871 +n03849679 +n12016567 +n04208936 +n07696728 +n13148208 +n01904029 +n08659861 +n07878785 +n07827130 +n03390983 +n02624807 +n03319745 +n03994614 +n00446493 +n12477583 +n02920658 +n04602956 +n02688273 +n07577538 +n04350581 +n09283405 +n04074185 +n04495843 +n03538179 +n03454885 +n03878211 +n10308168 +n08518171 +n02660208 +n07904760 +n07928367 +n10174445 +n02137015 +n02863426 +n07700003 +n04015908 +n03946076 +n11725821 +n01794344 +n04364160 +n01663782 +n04283255 +n02822064 +n04406239 +n02782681 +n11990313 +n03563460 +n02957008 +n07889814 +n07896060 +n03683079 +n04278447 +n13011595 +n11810358 +n03836451 +n12827537 +n03545470 +n03213538 +n07929351 +n03471190 +n02882301 +n03625943 +n03397087 +n11955896 +n04097373 +n03145522 +n03034405 +n02889646 +n02928299 +n09652149 +n01641391 +n04593524 +n07651025 +n03719343 +n03884778 +n03452594 +n02174659 +n12345280 +n03039827 +n03309687 +n11635433 +n02057330 +n01664990 +n09779790 +n02011016 +n09689958 +n07770763 +n03010915 +n03443912 +n02946509 +n13050397 +n03031012 +n04217546 +n04124202 +n12766869 +n04177041 +n12050533 +n03251932 +n03086580 +n03918737 +n04386792 +n03176594 +n01577035 +n01669654 +n01818832 +n10441962 +n03885904 +n03724756 +n02925666 +n03549589 +n03062122 +n02828427 +n12604228 +n03624400 +n07725888 +n03873699 +n01503976 +n02887079 +n03610098 +n02940385 +n04610013 +n03652100 +n04496872 +n04008385 +n02583890 +n10476467 +n03395514 +n03306385 +n04228581 +n02389261 +n12576323 +n01579149 +n01623425 +n02593019 +n03995265 +n02124484 +n12745386 +n04355267 +n02643836 +n01614343 +n03810952 +n04058594 +n12278650 +n03474779 +n02823510 +n00442437 +n12039317 +n04574067 +n03762602 +n02153109 +n03518943 +n04289827 +n02288268 +n07749969 +n04132985 +n03213826 +n04307986 +n03567066 +n02049088 +n04408871 +n03522003 +n09305898 +n04266375 +n08571898 +n03039259 +n01587526 +n03261603 +n00464277 +n02627532 +n02992368 +n03640850 +n03037404 +n04525191 +n02106854 +n07772147 +n04173511 +n12761284 +n03257210 +n02813544 +n07740342 +n04066270 +n03070059 +n03616428 +n02904233 +n03209910 +n04389854 +n03078995 +n03193260 +n01488038 +n01754533 +n12629305 +n02055107 +n11664418 +n04228693 +n03353951 +n03440682 +n03025250 +n03300216 +n02042046 +n04226826 +n03342015 +n03090000 +n02050313 +n03492250 +n01535690 +n01572654 +n03465718 +n02879309 +n06278338 +n04113406 +n03695857 +n09720256 +n01860002 +n02851939 +n09828216 +n02564270 +n03528901 +n02542432 +n11978961 +n01670802 +n03956623 +n01612275 +n09376786 +n03222318 +n02813645 +n02213543 +n13898207 +n03616763 +n03616979 +n11904109 +n04212282 +n04608435 +n02042472 +n04198453 +n03216402 +n02015357 +n12282737 +n02699629 +n12866635 +n02048353 +n02933340 +n01793715 +n12001707 +n02878222 +n03187037 +n03105306 +n04080705 +n04254009 +n01623880 +n02839592 +n03436182 +n01591123 +n01318279 +n03002816 +n13155095 +n03141702 +n03775388 +n12165170 +n03322836 +n03259401 +n04471148 +n03911767 +n12585629 +n04317325 +n04257986 +n03133050 +n02035210 +n12891305 +n11882426 +n04491388 +n12948251 +n03498781 +n04262161 +n03775636 +n09915651 +n07584332 +n07852614 +n11626152 +n03901750 +n09723067 +n04265904 +n09920283 +n02397744 +n03253796 +n07712959 +n03898129 +n01743936 +n02075612 +n04560292 +n03479397 +n04334365 +n04357121 +n10145902 +n03844673 +n09854421 +n12687957 +n12598027 +n03944138 +n01839750 +n07722888 +n04258859 +n03088389 +n03351434 +n03509608 +n01677747 +n03145147 +n12046815 +n03505133 +n01629962 +n03333252 +n03993703 +n02962061 +n04529962 +n03463666 +n07681691 +n12160857 +n04187233 +n09331251 +n11614713 +n04376400 +n12301445 +n12633994 +n03883524 +n11614420 +n13062421 +n03645011 +n03293863 +n11640132 +n02579928 +n02854739 +n04461437 +n07729384 +n02977936 +n02836392 +n03593122 +n01666228 +n07820683 +n07568502 +n11910460 +n09348460 +n09712324 +n02403740 +n03482877 +n04370774 +n07750146 +n12992177 +n03152303 +n04134008 +n09805324 +n01611800 +n04374315 +n07586099 +n02032222 +n01979874 +n04350769 +n02907873 +n03016609 +n02543565 +n03256166 +n03016737 +n02419336 +n03268790 +n03559999 +n07765999 +n04607035 +n02416104 +n02123917 +n12484784 +n03225108 +n10739391 +n03506880 +n02918831 +n03045228 +n12516828 +n01314663 +n04172342 +n02768226 +n12368028 +n01500476 +n01558149 +n03604156 +n04035912 +n02359915 +n12261571 +n03875955 +n01887623 +n03871371 +n03390786 +n12494794 +n03826039 +n04465358 +n03838298 +n03165466 +n04229737 +n01321770 +n04354026 +n02998003 +n04114844 +n10611613 +n03600475 +n01909906 +n00466880 +n04284869 +n07722485 +n04496614 +n03298716 +n02285801 +n04081699 +n07765208 +n12659539 +n11618525 +n11757653 +n07727048 +n03913343 +n12070016 +n02697675 +n04284572 +n02595702 +n04482297 +n03516996 +n03704549 +n02040266 +n04476116 +n01323261 +n03823216 +n07696403 +n03226880 +n09734535 +n03950537 +n01671479 +n03049924 +n12593994 +n04568841 +n03604400 +n01837072 +n01754370 +n03122202 +n12338454 +n04094720 +n04150980 +n03429682 +n03884926 +n03378005 +n02434954 +n03461288 +n02893692 +n04472563 +n10472129 +n04590021 +n07739344 +n04162433 +n03395859 +n12059314 +n03498662 +n03678729 +n02927764 +n02770211 +n11710393 +n07730207 +n04178190 +n07772935 +n03801880 +n04414675 +n12729521 +n12203529 +n04122578 +n04575824 +n06267655 +n03698360 +n02804515 +n02431337 +n08598568 +n02893608 +n02270623 +n00479440 +n11616662 +n02884994 +n04305323 +n02407625 +n04476831 +n04222307 +n03179910 +n11623967 +n00446311 +n00454983 +n02886434 +n12279458 +n03723781 +n11816121 +n02403231 +n11808299 +n07816296 +n03219483 +n02657694 +n00453478 +n02816656 +n02625851 +n04112752 +n03339529 +n12171316 +n02044517 +n04137773 +n01486838 +n03015149 +n12911673 +n03967270 +n03498441 +n11672269 +n03386870 +n11615967 +n02580679 +n01681653 +n02793199 +n02824319 +n10727458 +n02555863 +n01533000 +n02175916 +n12064389 +n04383015 +n02469472 +n03101664 +n03623338 +n12295796 +n02869249 +n01792042 +n03447075 +n04453390 +n04382438 +n04112252 +n03332393 +n12729729 +n01851207 +n04269270 +n12333771 +n06272612 +n03135532 +n02927887 +n11711537 +n12301180 +n04107743 +n01813948 +n03282295 +n09714694 +n00483409 +n01504344 +n04279353 +n04040373 +n12658308 +n04134523 +n10104064 +n12056601 +n04525417 +n07819166 +n12263038 +n02072798 +n03125057 +n03367410 +n04000592 +n03549897 +n01877606 +n01564914 +n12307076 +n02855925 +n03176763 +n12271933 +n04121728 +n07690511 +n02825442 +n04442441 +n01630901 +n03088580 +n02499808 +n10675010 +n01531971 +n02273392 +n01526521 +n01531344 +n03667664 +n02888270 +n04412416 +n07733394 +n04559910 +n04105704 +n11792341 +n04201064 +n01693175 +n04555291 +n02908773 +n01976868 +n03529175 +n03365231 +n03622839 +n04258333 +n03327133 +n03425769 +n12477747 +n03718935 +n11727540 +n07933799 +n03030262 +n12043673 +n02619550 +n07937461 +n12198286 +n08560295 +n12402348 +n01733957 +n12344700 +n02763604 +n11925303 +n01557962 +n03927299 +n11611758 +n03035252 +n09454412 +n04004990 +n03456299 +n02175569 +n03668279 +n12352990 +n03507241 +n01534155 +n12278371 +n02499022 +n03822767 +n01318381 +n04024983 +n04277493 +n11934616 +n02027075 +n11611561 +n03454442 +n02236355 +n01732789 +n07722052 +n01489501 +n04409625 +n10563403 +n01817263 +n07757511 +n03770316 +n02977438 +n01840775 +n03607923 +n03322704 +n02375302 +n01614038 +n01646555 +n03952576 +n02946824 +n12847008 +n03016389 +n11809594 +n03165096 +n03839671 +n02687821 +n01689081 +n03822656 +n02597608 +n12336727 +n01579578 +n03631922 +n03904909 +n11658331 +n04224543 +n12621410 +n03870672 +n04252331 +n09720842 +n01396048 +n11988596 +n00483205 +n02871005 +n01597022 +n02382039 +n07743902 +n02358890 +n07877961 +n05263448 +n01862399 +n04136800 +n10624540 +n11990167 +n02731398 +n03366974 +n03490006 +n01561732 +n02626265 +n10627252 +n12402051 +n08517676 +n10488656 +n03099274 +n03718581 +n11806219 +n01830042 +n07728585 +n03732114 +n10755080 +n03359285 +n07720277 +n03354207 +n01596273 +n04416005 +n01847253 +n07733567 +n09725653 +n04274985 +n00449977 +n07772274 +n12063639 +n01530439 +n01322508 +n04397768 +n07273802 +n04261281 +n10524076 +n01678343 +n03410938 +n01797020 +n02388832 +n07719616 +n03639497 +n09787765 +n07721018 +n11818069 +n04185529 +n11644462 +n12074408 +n00483848 +n01583495 +n11891175 +n03347617 +n03308481 +n02535258 +n07750872 +n07748157 +n02855701 +n04584373 +n02461830 +n02912557 +n12277578 +n03604311 +n03643253 +n03031152 +n04039742 +n03435743 +n13908201 +n04150153 +n03250405 +n01410457 +n02357401 +n12588780 +n12729315 +n01690149 +n02538216 +n03171228 +n02424909 +n06274760 +n03775747 +n04211857 +n12429352 +n12272239 +n11759853 +n03401129 +n12649317 +n02625258 +n12651611 +n03603442 +n02803934 +n03861271 +n02605936 +n02018368 +n12711984 +n02811936 +n04612026 +n01339471 +n02923682 +n09194227 +n04346157 +n03939178 +n12635532 +n01593028 +n01793249 +n02380464 +n12400720 +n07708398 +n12020941 +n12492106 +n12850336 +n12749679 +n02892948 +n12591017 +n03193423 +n01791463 +n11979527 +n12134025 +n12167075 +n09308743 +n13108545 +n01618503 +n07827284 +n07724492 +n02338145 +n04533946 +n01586020 +n07598256 +n01603953 +n12646740 +n03067518 +n04046277 +n01532511 +n07769584 +n11644046 +n12753573 +n02681392 +n08492461 +n07749446 +n04409384 +n01791954 +n12330891 +n04560882 +n10145480 +n04250473 +n02655848 +n02903126 +n11736851 +n11901294 +n12865824 +n03870105 +n00449892 +n04240752 +n11851258 +n04200537 +n12049562 +n01521399 +n03565830 +n07860447 +n03067212 +n01664674 +n07561590 +n02727141 +n02324514 +n02372952 +n01584853 +n07766173 +n11811706 +n03097362 +n04200258 +n02732572 +n01853195 +n12282527 +n09838621 +n02764505 +n04256891 +n12337617 +n12635955 +n07831267 +n11628793 +n12316572 +n07807834 +n02037869 +n01821869 +n02820556 +n04517211 +n01839086 +n03842986 +n07698401 +n02386224 +n07841800 +n01830915 +n11616486 +n11902389 +n03427202 +n12727101 +n01851573 +n02125494 +n07746186 +n11628087 +n07746551 +n03943115 +n11892029 +n02861022 +n11733312 +n01852329 +n09392402 +n12336224 +n07887099 +n03403643 +n04414199 +n07895100 +n02264232 +n02317781 +n07823460 +n07755929 +n02524202 +n04324297 +n11627512 +n01585715 +n02922578 +n00479887 +n02687423 +n02416880 +n11784126 +n12073991 +n01853870 +n01561452 +n04187970 +n10300154 +n02520147 +n12294124 +n07743224 +n12066018 +n11634736 +n02041678 +n11626585 +n02386141 +n03986949 +n07860331 +n12356023 +n12072722 +n03082280 +n12083113 +n12979829 +n01448594 +n03007444 +n07858978 +n01641739 +n02043333 +n12020736 +n02751215 +n04528079 +n01538200 +n07925608 +n12091550 +n03742019 +n03518305 +n01642539 +n03414029 +n04363991 +n03767966 +n02596067 +n01586374 +n02885882 +n04080138 +n11617631 +n02033779 +n09451237 +n02310585 +n12648045 +n03955489 +n01752736 +n07899899 +n02299505 +n01579410 +n02156871 +n02998841 +n03759661 +n02050809 +n02683454 +n11621950 +n02910145 +n04967801 +n07896661 +n11906917 +n12275675 +n11611233 +n07736692 +n02312640 +n12588320 +n04399537 +n12757303 +n04197781 +n12717224 +n11635152 +n03122295 +n01792955 +n13133932 +n02518324 +n01584695 +n02915904 +n02967294 +n04345201 +n03019434 +n02470238 +n03049782 +n03101517 +n12709688 +n03716887 +n02422391 +n12638753 +n00288384 +n02162561 +n02053584 +n01317294 +n03334291 +n07814634 +n12273768 +n12406715 +n11644226 +n01646802 +n03460147 +n12338796 +n01972541 +n02147947 +n03890093 +n04127395 +n01581984 +n01681328 +n02213239 +n04582869 +n03254189 +n03274265 +n03186285 +n11839823 +n01624833 +n09792969 +n07891189 +n12023726 +n07619208 +n03466600 +n01849676 +n12190869 +n03079136 +n12317296 +n13001930 +n00477639 +n02944459 +n03903733 +n04131208 +n12710295 +n12180885 +n11612349 +n03443149 +n03982331 +n04264765 +n12642090 +n03237416 +n13868944 +n04046400 +n11705171 +n11979715 +n12597134 +n01609956 +n01568294 +n01469103 +n00443692 +n01606672 +n04556408 +n07690019 +n03977592 +n03358726 +n12696492 +n01573240 +n11632619 +n01772664 +n03453231 +n04179712 +n03646020 +n01812662 +n04306592 +n07724654 +n13908580 +n02903852 +n04284438 +n13132656 +n04317063 +n07829248 +n01589718 +n02654745 +n12294331 +n12515925 +n07900825 +n07721195 +n04189282 +n11907689 +n01624537 +n12333530 +n07762244 +n11757851 +n01599159 +n04038338 +n01568892 +n12691661 +n09744834 +n04307767 +n03120778 +n07920540 +n03781683 +n04185804 +n12080820 +n04354182 +n07574426 +n02579303 +n03046802 +n12078172 +n03210245 +n01614556 +n02304432 +n07713267 +n09724656 +n02861147 +n12755387 +n01483830 +n12921868 +n12026018 +n07817871 +n12062781 +n04241573 +n11621727 +n03376159 +n11815721 +n13007034 +n03540090 +n00450866 +n11619455 +n01528845 +n01568720 +n12743352 +n02871314 +n03606251 +n01490670 +n04246060 +n02053425 +n10780284 +n01915700 +n04510706 +n00456465 +n01563945 +n11809094 +n09855433 +n04112579 +n03855333 +n09809925 +n03413684 +n02123478 +n12070712 +n03651843 +n02032355 +n01591005 +n01646648 +n02752615 +n02415829 +n03283221 +n04368496 +n01573360 +n02321170 +n10348526 +n04446844 +n07763792 +n12077944 +n04431025 +n02895438 +n10082687 +n07714188 +n02262449 +n03090172 +n12491017 +n01558461 +n12754781 +n04070415 +n04297098 +n03424862 +n01970164 +n09833536 +n01793435 +n01670535 +n09894445 +n09676247 +n01548492 +n12501202 +n03250089 +n03358380 +n02578928 +n12020184 +n02301935 +n03393017 +n12340755 +n01849863 +n01748906 +n03075946 +n01810268 +n01984245 +n04555400 +n12286988 +n04097760 +n02050586 +n12104238 +n01679962 +n02709101 +n01569060 +n12790430 +n01757901 +n13199717 +n11815918 +n07827410 +n02970534 +n12942572 +n07924276 +n04103918 +n11704093 +n07908647 +n07601686 +n12172906 +n04084889 +n02381261 +n02299157 +n11978713 +n12460957 +n02963503 +n03272810 +n12469517 +n03443005 +n01797307 +n02952237 +n11908549 +n13912540 +n03428226 +n10276477 +n01757343 +n01443243 +n01607600 +n03580518 +n12709103 +n07579688 +n04329834 +n12710415 +n11808932 +n10583790 +n02213788 +n11622184 +n12596709 +n02216211 +n07721942 +n07765361 +n01848453 +n11724109 +n02028451 +n02935017 +n12046028 +n10629939 +n00441073 +n07900958 +n12451399 +n02823964 +n04210120 +n01848840 +n10485883 +n07767709 +n02432704 +n11622591 +n03210372 +n07848196 +n11992806 +n02953197 +n07620689 +n01521756 +n03571625 +n03158186 +n12647560 +n02065407 +n01572782 +n09890749 +n05581932 +n07754451 +n03350204 +n13044375 +n12294723 +n12482893 +n04434531 +n12989938 +n12196336 +n01701859 +n07746334 +n11941924 +n02047411 +n12650379 +n10486166 +n01599556 +n01567879 +n12675876 +n01682435 +n02043808 +n12362668 +n12306089 +n02999138 +n01679626 +n03557270 +n01546039 +n11901759 +n01549053 +n11883328 +n06596727 +n03193107 +n11612018 +n03300443 +n03612010 +n03668488 +n12648888 +n01448291 +n11632167 +n10262445 +n09742101 +n09717233 +n04299370 +n03094159 +n04536595 +n03514693 +n02029706 +n02886321 +n07816052 +n04045255 +n01851731 +n02627292 +n01841288 +n02739889 +n02932693 +n03784896 +n04569063 +n07902799 +n03863108 +n02607470 +n13200651 +n07916183 +n01573898 +n04347119 +n10076604 +n13033577 +n01824035 +n03630262 +n04426316 +n03064250 +n12262018 +n12048399 +n12279772 +n04143140 +n07829331 +n12891643 +n01826680 +n12646605 +n13103877 +n02023855 +n03086868 +n04163530 +n03736470 +n04358117 +n13872822 +n03159640 +n01680655 +n11611087 +n03980478 +n02978478 +n01555004 +n12402840 +n07763987 +n04387706 +n04979002 +n03258330 +n09856671 +n11624192 +n01538059 +n02003839 +n12552309 +n10469874 +n01576076 +n03643149 +n04419868 +n04586581 +n00483508 +n03131967 +n01847407 +n07929172 +n09683757 +n03786621 +n04369282 +n12733870 +n11612575 +n11619227 +n03301833 +n02176439 +n01569971 +n07935043 +n02563792 +n02051059 +n04482177 +n11859472 +n11710136 +n04115144 +n07864934 +n07691758 +n02620167 +n07748276 +n03415486 +n07835921 +n00452152 +n01848323 +n12906214 +n12075010 +n01563449 +n01499396 +n01570267 +n12047345 +n07920989 +n07601572 +n02683558 +n04428634 +n04345028 +n12161969 +n03460040 +n02561514 +n02006364 +n03582959 +n11812910 +n13185269 +n04297847 +n07896165 +n01552813 +n12361946 +n02031585 +n12766595 +n11622368 +n11695599 +n11615387 +n02509197 +n12409470 +n01314388 +n11758799 +n09846469 +n02675219 +n04253057 +n04041243 +n12276628 +n04381724 +n01855188 +n02203152 +n04403925 +n11895092 +n11924849 +n04172904 +n11888800 +n01546506 +n07906718 +n01489920 +n03436417 +n03615655 +n07765073 +n02434190 +n02004492 +n12282235 +n12406488 +n11981192 +n10373390 +n13183056 +n04332074 +n12818346 +n07731006 +n02598573 +n02438580 +n01957335 +n03356982 +n10288964 +n02629230 +n02042759 +n12319414 +n01451426 +n03521675 +n02016066 +n01813532 +n13207335 +n11805544 +n04401828 +n02952109 +n03963294 +n10013811 +n12058630 +n01551711 +n01574560 +n01858780 +n10093818 +n03858183 +n01550172 +n03571280 +n02309242 +n10258786 +n01569423 +n10134178 +n08578517 +n04445327 +n03250279 +n02584449 +n03223553 +n04523831 +n04485423 +n02050442 +n04474035 +n04528968 +n02649546 +n01913166 +n09971273 +n04517408 +n02437482 +n03824713 +n03778817 +n07643026 +n01613177 +n12022054 +n07714448 +n07592768 +n00454493 +n03296328 +n02305929 +n03084834 +n03698815 +n12093600 +n08649711 +n03466493 +n04067658 +n03041114 +n03514451 +n01491006 +n04178329 +n03790953 +n03938401 +n02048115 +n07768858 +n03273740 +n10333601 +n05418717 +n12754003 +n02098806 +n03314608 +n01565930 +n12113195 +n12284821 +n12483427 +n04332580 +n10382710 +n03416094 +n02837887 +n03917198 +n14131950 +n04414476 +n11861641 +n11903671 +n01841441 +n09872066 +n01806467 +n04964799 +n00467320 +n01595974 +n03220692 +n01339083 +n01825278 +n11727358 +n04518343 +n11984144 +n07724269 +n02292692 +n02324850 +n01753032 +n01624115 +n11816649 +n07930062 +n02460451 +n12319204 +n04340521 +n12325234 +n01541102 +n02979836 +n00141669 +n01822300 +n11658544 +n12272883 +n03334382 +n11726707 +n03639077 +n07904934 +n03516367 +n03698723 +n03553248 +n11812094 +n03724417 +n01540566 +n02341974 +n11819912 +n07734555 +n02987379 +n03580845 +n12546962 +n02548247 +n12753245 +n07768423 +n12849279 +n11617090 +n02912894 +n07840027 +n12295033 +n12703383 +n02696165 +n10419785 +n04426427 +n03694639 +n11712282 +n04142999 +n01597737 +n03801533 +n01495493 +n07774719 +n03267113 +n01742821 +n03859170 +n03416640 +n03320959 +n12733218 +n02017725 +n13229543 +n09344324 +n04965451 +n01490112 +n10069296 +n12084555 +n04554406 +n04086446 +n02976249 +n02656032 +n02424486 +n02381609 +n09934337 +n04573937 +n07685399 +n02800497 +n02905152 +n02951703 +n07760153 +n03609397 +n00447463 +n03680512 +n02046939 +n03288886 +n11870418 +n03386544 +n07767171 +n07847453 +n12687044 +n01664492 +n03099147 +n03463381 +n02125081 +n12920204 +n03517647 +n02603540 +n12267411 +n11933546 +n11947802 +n04387095 +n12975804 +n02973904 +n13195341 +n04048441 +n11753143 +n03212114 +n03298858 +n04366116 +n01424420 +n10450161 +n01442972 +n07877299 +n04503593 +n04349306 +n12969425 +n12597466 +n03092656 +n07914995 +n03487886 +n12223569 +n01756733 +n13919919 +n04175147 +n02029087 +n03530511 +n02425887 +n03572107 +n03927539 +n03383099 +n04130907 +n01632601 +n07823105 +n10378026 +n02382850 +n07613266 +n03235180 +n02810782 +n12708654 +n11636835 +n02823124 +n03402941 +n12121610 +n03715114 +n04052658 +n00480366 +n12493208 +n04255163 +n12145477 +n01489709 +n12402596 +n01598074 +n03837606 +n02628062 +n04103364 +n03247083 +n02032480 +n07736256 +n12578916 +n09218315 +n02218371 +n03730334 +n02080146 +n03836906 +n02868638 +n02198859 +n12744387 +n02942460 +n11754893 +n12274358 +n02725872 +n09218494 +n03942920 +n07574780 +n02921756 +n01757115 +n02763306 +n11758122 +n10508141 +n02303284 +n04083800 +n13879049 +n12765115 +n12075830 +n02666943 +n11980318 +n07907037 +n12794135 +n02333909 +n03870980 +n07586718 +n11923174 +n10782471 +n01493146 +n12294871 +n11726269 +n12932173 +n07825972 +n12732009 +n03572321 +n07682197 +n03423306 +n12495895 +n03545756 +n03557692 +n03785237 +n07902937 +n09899671 +n12061614 +n07902443 +n01449374 +n12632335 +n03474896 +n03539433 +n04310904 +n03902482 +n12006930 +n03285578 +n04200000 +n03912218 +n07821260 +n03548626 +n03223686 +n11826198 +n03165616 +n02104280 +n09981278 +n09382099 +n03732458 +n03987990 +n09946814 +n12270741 +n07737745 +n04172776 +n10189278 +n03543012 +n12629666 +n02180875 +n04087432 +n12961879 +n03321954 +n12528549 +n02424085 +n09843443 +n03846677 +n12304703 +n09873473 +n03410571 +n03041810 +n02425228 +n01562451 +n03615790 +n10081204 +n03985881 +n07842130 +n02890513 +n03649797 +n02381004 +n12560621 +n12523475 +n07687626 +n11905749 +n11759404 +n12905412 +n03542605 +n03983612 +n12573474 +n11972291 +n03767459 +n02698634 +n12713866 +n13084834 +n02202006 +n13108323 +n02631475 +n10737103 +n03637898 +n03069752 +n12400489 +n09692915 +n10242328 +n02794664 +n12465557 +n12085267 +n03348868 +n12754981 +n02745611 +n10504206 +n12073554 +n02835724 +n04605572 +n02825961 +n03528523 +n12116429 +n02973805 +n12708941 +n01544704 +n04180229 +n09403211 +n08242223 +n02146371 +n12127768 +n09770359 +n03295246 +n01757677 +n04385799 +n02584145 +n07909593 +n12587132 +n13029326 +n04184316 +n07903643 +n01848555 +n10750031 +n02332156 +n12703557 +n03196990 +n12406902 +n02768973 +n12416073 +n02147591 +n09724533 +n09693982 +n12687462 +n01982068 +n03435991 +n03272125 +n07713763 +n03018712 +n03648431 +n03336575 +n07854184 +n12806015 +n07879174 +n03984643 +n03147280 +n02699915 +n07617708 +n01533651 +n12483841 +n01697611 +n02576906 +n03724066 +n03935116 +n09782397 +n01599269 +n10672371 +n12066630 +n03178674 +n15086247 +n03523987 +n02826068 +n12580654 +n02358390 +n01647640 +n10259997 +n03738066 +n13915023 +n02639605 +n03174450 +n12269406 +n09874428 +n03432061 +n04386051 +n03923918 +n04592465 +n12480456 +n10333439 +n04206790 +n01443831 +n02967626 +n07733712 +n03746155 +n12947313 +n11690254 +n12244650 +n12670758 +n08658309 +n12710693 +n11860555 +n03485198 +n03047799 +n04461570 +n07600177 +n02126640 +n12704343 +n02866386 +n03008976 +n04532831 +n03465426 +n12691428 +n01641206 +n04962062 +n03254046 +n04425804 +n02014524 +n03439348 +n02538010 +n11603246 +n12265600 +n12277800 +n04016240 +n12086192 +n09650729 +n01549641 +n03112719 +n04961062 +n02710324 +n12049282 +n12362274 +n11969607 +n12856680 +n02201000 +n07863802 +n03360622 +n07601809 +n04354487 +n12898774 +n12939282 +n03109693 +n12867826 +n12441390 +n12915811 +n12879527 +n04137355 +n04131368 +n03527149 +n10164492 +n09932508 +n12426623 +n12575812 +n02557318 +n10263790 +n04309548 +n00476235 +n04194127 +n11876634 +n10327987 +n03499354 +n02616851 +n04464615 +n03615406 +n02744844 +n11732567 +n10347446 +n09752519 +n04228215 +n10004718 +n07899533 +n12030908 +n15102894 +n12044467 +n11711764 +n02610066 +n03415749 +n04562496 +n02034295 +n02297442 +n03566193 +n12506991 +n07774842 +n12827270 +n14908027 +n12242409 +n04072960 +n02829596 +n12496427 +n02266050 +n13108481 +n12473840 +n08677424 +n12076223 +n15091473 +n02815749 +n04549028 +n12558425 +n12023407 +n04179824 +n02378541 +n03188725 +n12517445 +n07573347 +n02004131 +n11921395 +n12570972 +n10602470 +n12095647 +n03854421 +n02450295 +n02792409 +n03543735 +n12836337 +n12204175 +n12152722 +n07900734 +n12517642 +n02775039 +n12607456 +n03376938 +n12179122 +n09873348 +n01847978 +n07888816 +n10453184 +n09675922 +n01851895 +n12865562 +n01797601 +n03711044 +n02738859 +n12064591 +n04033425 +n08551296 +n01650690 +n01537895 +n04207151 +n10087434 +n12261808 +n09438844 +n10364198 +n01814755 +n01583209 +n12270946 +n11892817 +n03344642 +n04117464 +n07847917 +n04003241 +n10362319 +n10477713 +n03495570 +n07560542 +n04363777 +n04534359 +n02404906 +n03349892 +n07712267 +n02960352 +n07866277 +n07857170 +n00324978 +n02755823 +n03150511 +n04211528 +n01899894 +n07588299 +n11874081 +n03425325 +n04506506 +n11949402 +n02952374 +n03309110 +n12159388 +n07591049 +n03068998 +n03228254 +n10279018 +n04173046 +n07728053 +n13052931 +n01597906 +n12368451 +n02767665 +n09435739 +n03915900 +n09728285 +n03292603 +n03331077 +n07817160 +n07917392 +n12540250 +n04153025 +n10209082 +n03968581 +n12676534 +n11824146 +n03521899 +n01853666 +n04292921 +n12332030 +n03984759 +n02863014 +n07801091 +n07723177 +n03289660 +n01533481 +n04488202 +n03468821 +n02382338 +n03543254 +n01961985 +n07915918 +n03703862 +n02771004 +n02047045 +n03877674 +n13141415 +n03529629 +n02240517 +n03675235 +n04491638 +n12384037 +n04419642 +n03019685 +n07591586 +n04496726 +n12985420 +n12927013 +n12196694 +n03473227 +n11621547 +n02988066 +n10451450 +n07729828 +n09618760 +n12196527 +n01555305 +n12830222 +n11950877 +n13190747 +n12160303 +n12390099 +n02818135 +n03163381 +n04554211 +n03244919 +n07897975 +n03386726 +n04290615 +n02011281 +n12407890 +n04123448 +n07904865 +n03447358 +n02393940 +n07931870 +n02937958 +n04318787 +n04587327 +n12807409 +n04112430 +n07560193 +n12774299 +n02618827 +n07854982 +n03757604 +n03817191 +n12793494 +n02324431 +n03013850 +n04113641 +n01612476 +n03127408 +n02038466 +n03799876 +n04257684 +n03382292 +n10449664 +n04394630 +n10275395 +n07698250 +n12329473 +n07694659 +n07642742 +n02563648 +n08583455 +n02557182 +n02775178 +n09274152 +n03189083 +n12570703 +n04211219 +n12486574 +n03073694 +n11969166 +n02475078 +n02976350 +n08584914 +n07899660 +n10116702 +n01613807 +n12461109 +n04025508 +n12451240 +n12596849 +n12079963 +n03541269 +n04561422 +n11699442 +n07725255 +n03460297 +n07616748 +n12757458 +n03103563 +n02813752 +n07698782 +n12840362 +n01543632 +n01602832 +n01875313 +n12472024 +n02926591 +n02872333 +n10728624 +n12532564 +n03882960 +n12333053 +n03684224 +n13146583 +n03436075 +n04154340 +n03868643 +n02598878 +n04139140 +n03266371 +n04083309 +n12506341 +n12200143 +n03503477 +n12807773 +n03123917 +n13029760 +n10173771 +n03659809 +n12047884 +n12759273 +n04193377 +n04258438 +n04597400 +n04579986 +n03719743 +n04299963 +n02864504 +n10510245 +n03417970 +n09719794 +n03138344 +n02085272 +n07694516 +n12665857 +n01642257 +n03229244 +n10581890 +n10318293 +n03635108 +n10652605 +n12189429 +n09934774 +n11709205 +n04207903 +n10296176 +n10603851 +n03450734 +n13223588 +n12754648 +n09886403 +n07751280 +n11950686 +n07814390 +n12799776 +n01646902 +n09796809 +n12819728 +n01938454 +n02410011 +n07607138 +n02119634 +n10332861 +n09230202 +n02757061 +n02849885 +n15092227 +n12151615 +n03111041 +n02413050 +n03506560 +n07744057 +n04030518 +n12544539 +n04089836 +n02038993 +n13882201 +n12099342 +n01946630 +n10095769 +n02982416 +n12957924 +n13215586 +n07726525 +n12452836 +n03801671 +n04598318 +n01449712 +n12428747 +n04119751 +n10509063 +n07694839 +n02782602 +n11626409 +n02573704 +n12399384 +n12388989 +n01601068 +n11971406 +n04367011 +n07930315 +n12925179 +n04967674 +n03497352 +n03653833 +n01819465 +n03688192 +n02802990 +n03393761 +n04430475 +n13107694 +n10384496 +n07867164 +n12449526 +n01515303 +n12574320 +n01444339 +n07919310 +n03453443 +n04173907 +n02887489 +n07772788 +n03629520 +n02580830 +n11705387 +n12069679 +n01956344 +n02406533 +n03973402 +n03938037 +n04969952 +n04103094 +n04393808 +n07715407 +n04172107 +n01917882 +n12085664 +n07608429 +n09835230 +n04135024 +n07842605 +n12568186 +n04339879 +n07691091 +n01801876 +n00474568 +n01807105 +n12128071 +n01673282 +n11948864 +n03991837 +n09659188 +n02070174 +n02670683 +n12454949 +n10385566 +n11631854 +n12305293 +n12002428 +n12948495 +n12757816 +n11852028 +n10690648 +n09283866 +n03214582 +n03423877 +n04127521 +n03006626 +n09283193 +n07712559 +n01447331 +n02981321 +n02658531 +n11947629 +n02419634 +n02420828 +n11923637 +n12570394 +n11968931 +n12731029 +n09749386 +n07736813 +n03967396 +n11908846 +n03029445 +n02426481 +n01964271 +n13198914 +n04484432 +n12656685 +n10806113 +n11849983 +n03236423 +n10649197 +n07688624 +n03057541 +n12015221 +n02094931 +n02014237 +n07560331 +n02801450 +n04206570 +n07556406 +n11627908 +n11889619 +n07852229 +n04063154 +n02713364 +n02783459 +n12877838 +n02930214 +n02125010 +n02407276 +n07815424 +n12855494 +n12530818 +n07750449 +n01963317 +n10082997 +n03245724 +n03012013 +n03555006 +n02421136 +n03332989 +n04375405 +n03746486 +n12636224 +n03278914 +n07917133 +n12504783 +n09416890 +n03896526 +n02258198 +n12983048 +n03837698 +n12869061 +n04541987 +n01637615 +n04401949 +n02241426 +n13220122 +n07876651 +n03729308 +n02364840 +n01339801 +n03418915 +n09257843 +n11614039 +n09731343 +n03809603 +n05399243 +n01569262 +n11901597 +n03124474 +n01566207 +n03796522 +n12595699 +n04573281 +n09689435 +n11859737 +n03201529 +n12902662 +n03374372 +n03760944 +n09189157 +n01517966 +n10431625 +n02898269 +n03693707 +n04369025 +n07834618 +n04095342 +n02786331 +n03822504 +n02284611 +n09862621 +n03436891 +n07688898 +n12435777 +n03949317 +n12443323 +n12273114 +n12623077 +n04333869 +n07907831 +n07774596 +n05450617 +n03320262 +n04190376 +n12671651 +n11819509 +n07588111 +n09756049 +n07611046 +n04973291 +n11602873 +n00120010 +n03500699 +n03844815 +n03708843 +n04452528 +n04387261 +n09889065 +n10147121 +n03318294 +n12599435 +n04164406 +n01965529 +n11636204 +n11791569 +n12275131 +n02977330 +n07851443 +n04132603 +n07824191 +n09760609 +n12190410 +n07915491 +n12665271 +n10120671 +n02570164 +n10208950 +n02163297 +n02244797 +n09842528 +n08645104 +n01841679 +n11603835 +n04488857 +n07814487 +n01953762 +n04612373 +n11877193 +n03198500 +n03981924 +n01943087 +n11552806 +n04414909 +n03005033 +n02457945 +n10500217 +n10375314 +n04607242 +n07914777 +n09832456 +n12915568 +n12813189 +n10578021 +n03519081 +n07801779 +n12026476 +n03296081 +n03850492 +n07902121 +n09881265 +n12562785 +n03290195 +n10131151 +n10078719 +n01558765 +n03917814 +n02045596 +n07734183 +n03414676 +n07933154 +n02126787 +n12148757 +n12263987 +n07684164 +n03406966 +n01492569 +n02988963 +n12963628 +n09964202 +n03417749 +n01854838 +n02921029 +n02183096 +n11762433 +n11722466 +n02387093 +n02768655 +n12519089 +n09871229 +n07938313 +n10502329 +n11989393 +n03768916 +n13145040 +n11813077 +n04457910 +n03655720 +n03703945 +n11876803 +n01438581 +n07910379 +n07847827 +n02300797 +n09245515 +n10754189 +n04581102 +n12513172 +n02458135 +n03762332 +n11789589 +n09695620 +n03850053 +n07911249 +n12342852 +n12753007 +n07748574 +n07727458 +n03696568 +n04304680 +n07723039 +n07775197 +n07577144 +n03043693 +n04374735 +n01858281 +n09228055 +n09466678 +n01949085 +n02024479 +n11623815 +n02704645 +n07894451 +n01751472 +n01646388 +n01317916 +n13880994 +n10300500 +n11794024 +n03735963 +n04610274 +n11854479 +n07754894 +n02639087 +n02122510 +n02262803 +n12732966 +n04529108 +n13194036 +n09990777 +n10009276 +n12088223 +n12155009 +n07886176 +n04278247 +n04222723 +n11707229 +n01999186 +n07851641 +n12741792 +n01315213 +n10033412 +n04249582 +n03586631 +n03237839 +n12037499 +n12014085 +n07756325 +n01636352 +n03905947 +n08611339 +n07693590 +n03724538 +n09791816 +n01666585 +n10588965 +n11613219 +n10542608 +n12913791 +n10528023 +n03171635 +n11923397 +n12854600 +n10410246 +n12698598 +n04135118 +n09844457 +n04441790 +n03882611 +n02337001 +n07907342 +n12561169 +n12027658 +n10719132 +n09851165 +n02801823 +n12330587 +n01683558 +n12162181 +n04387932 +n11704620 +n09679170 +n07601290 +n04028221 +n10277027 +n09877750 +n11758483 +n10027246 +n03819336 +n10205231 +n12478768 +n03451711 +n12973443 +n01923025 +n03262717 +n07807594 +n00475535 +n07744430 +n02341475 +n04614655 +n07924747 +n03388323 +n12680402 +n03202940 +n04534520 +n09661873 +n15092059 +n11832480 +n04198355 +n12529220 +n12389130 +n12304115 +n03234952 +n07610620 +n02868975 +n04442741 +n05282652 +n02820675 +n12795352 +n12675299 +n08547468 +n04189651 +n04141198 +n04513998 +n12273939 +n12482668 +n12858618 +n01958346 +n03172038 +n10280674 +n04301760 +n02631330 +n12433178 +n07763107 +n03068181 +n07565259 +n03605598 +n13177884 +n04005197 +n09751496 +n12737383 +n07648997 +n09839702 +n09442595 +n07925229 +n12150722 +n11898775 +n09904208 +n02207345 +n07642361 +n07685918 +n03205458 +n10574538 +n09742315 +n02599557 +n03585682 +n04273659 +n02200850 +n03410740 +n03391301 +n07726672 +n09782167 +n13155305 +n02067240 +n07561848 +n07728708 +n12463134 +n12228229 +n09743487 +n12225563 +n03421669 +n03226375 +n03973945 +n12498055 +n04483925 +n04564278 +n11890150 +n12519563 +n12754468 +n04353573 +n11615607 +n04430896 +n04585128 +n10395828 +n10773665 +n02772435 +n09881895 +n12663023 +n01615303 +n12803754 +n09445008 +n03955296 +n05245192 +n05486510 +n07899769 +n07575510 +n02307681 +n03814817 +n02670186 +n03598515 +n12797860 +n03518135 +n07587962 +n12630763 +n06273743 +n09843824 +n03226254 +n12407222 +n02961544 +n12951835 +n06417096 +n02016659 +n01441117 +n07735404 +n09411189 +n13896217 +n03262248 +n03451120 +n02525382 +n03375329 +n04155068 +n12916179 +n10297234 +n11907100 +n03423568 +n04360914 +n12027222 +n12199790 +n01744270 +n09896401 +n07925116 +n03693860 +n04414319 +n07767549 +n03555564 +n04043411 +n07872593 +n03774461 +n03129471 +n04497801 +n11756870 +n09776346 +n04530283 +n01520576 +n12828220 +n01583828 +n04120842 +n09676021 +n04344734 +n01916388 +n12513613 +n09861863 +n02310334 +n03318983 +n04533499 +n02427576 +n12727518 +n04502059 +n11725480 +n11987126 +n11876204 +n03504205 +n09720595 +n12315999 +n12935609 +n04452757 +n12201331 +n01603152 +n10772092 +n03156279 +n12723610 +n02003037 +n03244775 +n07802963 +n11954642 +n07770034 +n09931165 +n10559508 +n01745902 +n07654148 +n10070108 +n01585287 +n13196003 +n04389718 +n10253122 +n03730893 +n02983357 +n02783900 +n01680813 +n03072440 +n03109253 +n03274435 +n11655974 +n10048612 +n07849733 +n07896994 +n03792334 +n03035832 +n03819448 +n03105088 +n11943992 +n01485479 +n01699675 +n11795049 +n12086778 +n01840120 +n07753980 +n10685398 +n04346428 +n04532398 +n07709172 +n02146700 +n09461069 +n03853924 +n01321456 +n12068432 +n09757449 +n03206282 +n03751757 +n13053608 +n11695974 +n12123741 +n03500209 +n04367371 +n02890940 +n01917611 +n07835331 +n02907656 +n04136045 +n12059625 +n03862862 +n12864160 +n00440039 +n03448590 +n12628986 +n04115802 +n03949145 +n12916511 +n12647893 +n09706255 +n13181811 +n07752109 +n04375615 +n01648620 +n04403524 +n09967967 +n12911079 +n03857687 +n02803539 +n01551080 +n10734891 +n13235159 +n04127633 +n07935878 +n12853482 +n10191001 +n03126385 +n10076224 +n01812866 +n12919403 +n03769610 +n09283767 +n03462110 +n11770256 +n12038898 +n09889170 +n11894558 +n10298647 +n02592055 +n02795670 +n11701066 +n12762049 +n02890662 +n07918193 +n02976455 +n03100897 +n13127843 +n12184912 +n00468299 +n12407079 +n12496949 +n03541537 +n05260127 +n01535140 +n01541760 +n11945783 +n07687053 +n07745046 +n12083847 +n02382132 +n12270027 +n10140597 +n03788914 +n01790711 +n02197689 +n03173270 +n10368624 +n04449290 +n01579729 +n07834872 +n07734417 +n02379630 +n01636829 +n12549192 +n12951146 +n13579829 +n03268142 +n11761202 +n02769669 +n09452760 +n04095577 +n12031139 +n02003577 +n12891469 +n03931885 +n01577941 +n04176295 +n12046428 +n03418402 +n13145250 +n11865874 +n12473608 +n11797321 +n01798168 +n09923186 +n02786736 +n01698782 +n09976283 +n03975788 +n14685296 +n01682172 +n07838441 +n02771286 +n03429137 +n03948950 +n02512830 +n02298218 +n10141364 +n02823848 +n02077384 +n12584715 +n11748811 +n02214773 +n03667552 +n04121426 +n04135710 +n07579917 +n12275888 +n07826453 +n12167436 +n04586072 +n09877288 +n04248396 +n02761696 +n03038870 +n01490360 +n12353203 +n09785891 +n12057660 +n04146343 +n12557556 +n02081798 +n02917964 +n07898617 +n12597798 +n07574176 +n07764630 +n03008177 +n04255899 +n04434207 +n07897600 +n09929577 +n11811921 +n12415595 +n02893941 +n12276110 +n02821202 +n09690621 +n02508742 +n02077787 +n02390640 +n03764822 +n02257985 +n13033134 +n04559166 +n07865196 +n10506915 +n12051103 +n10473917 +n12775919 +n02971579 +n12880462 +n11837970 +n02063662 +n09840520 +n12019827 +n09208496 +n12836508 +n02982232 +n04219185 +n03332005 +n07914128 +n07862461 +n04250692 +n09267854 +n04561734 +n02076402 +n12344837 +n02919148 +n06592281 +n03668803 +n03062985 +n04246731 +n12112609 +n04012482 +n03558633 +n03982642 +n01998741 +n07665438 +n04209509 +n07913882 +n01749244 +n07801342 +n02611561 +n04488742 +n01897536 +n10624437 +n13128976 +n07931612 +n04300643 +n03727067 +n03360431 +n07593471 +n10253296 +n03297226 +n03854506 +n07879450 +n10562283 +n12557438 +n13154388 +n12862512 +n02126028 +n07752514 +n02387887 +n12066261 +n07666176 +n02806530 +n09988703 +n03721252 +n03221540 +n12195533 +n02682569 +n03622058 +n03943266 +n04207596 +n11721337 +n02427032 +n07910152 +n01551300 +n12861345 +n11660300 +n03786313 +n12966945 +n02046171 +n02797535 +n03546112 +n07711232 +n02044908 +n02998563 +n02652132 +n12634986 +n12187247 +n11645590 +n07582892 +n03065243 +n09911226 +n04396902 +n10763075 +n02359047 +n10400108 +n04294614 +n03991646 +n11728945 +n07766891 +n12277150 +n13141564 +n10563314 +n12426749 +n07827750 +n12403994 +n12627119 +n03420801 +n10203949 +n12830568 +n12280060 +n13180875 +n12659064 +n04239436 +n03823312 +n04367746 +n12448700 +n01896844 +n07581931 +n09384106 +n11625223 +n04198722 +n01477875 +n09932336 +n03477512 +n12281974 +n10117739 +n07759194 +n12281788 +n01405007 +n03077616 +n02304036 +n12947544 +n03140126 +n12356960 +n07807002 +n07877849 +n02956795 +n04373795 +n07925500 +n10359546 +n09730077 +n01694955 +n10611267 +n04316498 +n07849912 +n12841354 +n07903543 +n10026976 +n04050313 +n03939844 +n03260849 +n07917507 +n12228387 +n03199775 +n01569566 +n02403920 +n04261638 +n02986160 +n03724623 +n01960177 +n03783430 +n07877675 +n10401639 +n04215153 +n03077741 +n02589623 +n12934985 +n03233624 +n04506688 +n12194147 +n09975425 +n07818825 +n12641007 +n10036692 +n02771750 +n12285900 +n01472303 +n10033663 +n10707134 +n03219966 +n11772879 +n10146416 +n10435169 +n10304086 +n12385566 +n03126580 +n12904314 +n03619196 +n02299846 +n03574243 +n12368257 +n03690473 +n01748686 +n09834378 +n07750736 +n02930645 +n01679307 +n03721047 +n02710044 +n07563207 +n02930080 +n09309168 +n03127203 +n02863536 +n02536165 +n01559639 +n09654518 +n02961035 +n12007406 +n12773651 +n04351699 +n03114504 +n06273414 +n02017475 +n01733466 +n02175014 +n07920663 +n03953901 +n09670521 +n09400987 +n11791341 +n02284884 +n12919646 +n07880325 +n03801353 +n01982347 +n07828642 +n01570421 +n03998333 +n03449309 +n10482220 +n12850906 +n12805561 +n12926689 +n03232543 +n04248851 +n03195959 +n04082562 +n03846100 +n07682952 +n07695652 +n11809271 +n09895561 +n04287898 +n09740724 +n02859955 +n09830400 +n03674731 +n02825153 +n04571686 +n13107891 +n10318607 +n07848093 +n13226871 +n08555710 +n03137473 +n02776978 +n03141455 +n12514138 +n01809371 +n09405078 +n01753180 +n02184473 +n11610215 +n03539546 +n12731835 +n04485884 +n03590588 +n10221312 +n04049753 +n03441345 +n02302244 +n12262185 +n15092650 +n11877646 +n10377185 +n01684578 +n03796605 +n07897116 +n03164344 +n12135049 +n10757050 +n01692523 +n04566756 +n07697699 +n07575392 +n10262655 +n04064747 +n07914006 +n12433769 +n07873348 +n04457767 +n10019072 +n02921195 +n03856465 +n04041408 +n12639584 +n12920955 +n11781176 +n07864756 +n03941013 +n03646148 +n04401578 +n11692792 +n02757714 +n02286089 +n04253168 +n03890514 +n07855510 +n03507458 +n04123026 +n11661909 +n12435152 +n04330746 +n09481120 +n03731019 +n03717285 +n03271030 +n02772101 +n07740597 +n02847852 +n12825497 +n12263738 +n03342262 +n03603594 +n07804543 +n12932365 +n12695975 +n10297531 +n04054670 +n03175081 +n12703856 +n03832144 +n03966206 +n02414290 +n03619275 +n09738121 +n03290096 +n10585077 +n07731767 +n12409840 +n12026981 +n02278980 +n02752810 +n01654637 +n02654112 +n10314836 +n13023134 +n01823414 +n07461050 +n11902982 +n04543636 +n02204907 +n04049585 +n12304899 +n03073545 +n04272928 +n10315456 +n03975657 +n09899782 +n12288005 +n07005523 +n03795269 +n09823832 +n02242137 +n02907391 +n03643491 +n03245889 +n12285369 +n03061345 +n03797264 +n07838073 +n09219233 +n02859343 +n07608098 +n03920641 +n12578626 +n10688356 +n04542858 +n07834065 +n00443803 +n04181561 +n04570214 +n02047517 +n03295012 +n01633781 +n10610850 +n04035836 +n03001115 +n04593376 +n02393807 +n13061348 +n10123122 +n11800236 +n13207094 +n10140929 +n12167602 +n01809752 +n10421956 +n02764935 +n03424489 +n12889219 +n04046091 +n07714287 +n07708685 +n07736087 +n04142434 +n11961446 +n04521863 +n02414763 +n02901377 +n00467536 +n13085747 +n03855756 +n11846765 +n02530999 +n03063199 +n04258618 +n12204032 +n04424692 +n11758276 +n02653497 +n03766508 +n02026629 +n02572484 +n12339831 +n01635027 +n01668436 +n07821919 +n01543175 +n02689748 +n12528974 +n04024862 +n04184880 +n11720891 +n13869896 +n01678043 +n01647303 +n11532682 +n03236217 +n04963307 +n03012897 +n11682659 +n03191286 +n07643891 +n12737898 +n10680609 +n07924955 +n03879705 +n10461060 +n02523427 +n02013567 +n09893344 +n04124488 +n09863031 +n12454436 +n12305089 +n07709046 +n03805180 +n11940599 +n01691217 +n04198562 +n03978421 +n02357585 +n07818572 +n12870682 +n03798442 +n04154938 +n10550369 +n11957678 +n01958531 +n09936825 +n02334201 +n07910538 +n11978551 +n10562135 +n12700088 +n12784889 +n04480853 +n03281673 +n07588419 +n02968333 +n11935469 +n13046669 +n11730602 +n09643799 +n11849467 +n01758757 +n09638454 +n03267468 +n07914586 +n12104734 +n02961225 +n09827246 +n09917214 +n13079073 +n12634734 +n04089376 +n13034062 +n11714382 +n12753762 +n07683039 +n11840067 +n07689842 +n12173069 +n12172481 +n04182152 +n07869522 +n10356877 +n02771166 +n03154895 +n07615289 +n12986227 +n12361135 +n03456447 +n12706410 +n12895811 +n02988156 +n03130761 +n10639359 +n03628215 +n02738741 +n01643507 +n07730708 +n03232309 +n02846733 +n04969540 +n03051041 +n12890928 +n03235327 +n04289576 +n07588817 +n10325774 +n03973285 +n09703485 +n02358584 +n03061674 +n03195332 +n02901259 +n07849619 +n04486934 +n07908812 +n01588725 +n03682877 +n11949015 +n04146504 +n04146862 +n07898247 +n03318865 +n04367950 +n07880213 +n04247011 +n01447658 +n12711817 +n03146687 +n02926426 +n12856091 +n11966896 +n02413593 +n09764900 +n03009794 +n03314227 +n10499232 +n10075693 +n04451318 +n12320806 +n11933728 +n07764315 +n12133682 +n09904837 +n12832538 +n03816530 +n07802863 +n04391445 +n09728137 +n03887330 +n04436012 +n03957991 +n07771731 +n06266973 +n10407310 +n10290919 +n07862244 +n01842504 +n10262561 +n12726159 +n07691954 +n07618119 +n03437829 +n11966617 +n03629100 +n04231905 +n04208760 +n03344305 +n03684143 +n12934174 +n08645212 +n03556679 +n12109365 +n03751458 +n02380875 +n02025389 +n02770721 +n09830629 +n02800675 +n04951186 +n04483073 +n12710577 +n12789054 +n12058192 +n11777080 +n07716203 +n09618880 +n04525821 +n04016846 +n02918330 +n10375052 +n13158512 +n13090871 +n02929582 +n02308735 +n10487182 +n02213663 +n07608339 +n04384593 +n12890490 +n03992436 +n02994573 +n13231078 +n12880244 +n01651059 +n02925009 +n09686401 +n13219976 +n09981540 +n04582771 +n06267758 +n09893502 +n13214340 +n03272940 +n12554911 +n02214341 +n04137089 +n03874487 +n04573513 +n12003167 +n12004547 +n13065089 +n01903346 +n04373428 +n02216365 +n02024185 +n12577895 +n11698042 +n07586318 +n11705776 +n03030353 +n04486213 +n07885705 +n07928163 +n02356612 +n02767038 +n02897097 +n11662371 +n04128710 +n09842395 +n07683360 +n11533212 +n08495908 +n12841193 +n03669886 +n07768068 +n02381831 +n12081215 +n02757337 +n02811618 +n10144338 +n01379389 +n09698644 +n12779851 +n10400618 +n11801891 +n12322099 +n12408077 +n02767956 +n08640962 +n07816839 +n03021228 +n10346015 +n07868830 +n07917272 +n10076957 +n12865708 +n04290259 +n03595264 +n03986224 +n07825194 +n01610100 +n04417086 +n12995601 +n12734070 +n15091129 +n12428412 +n07587331 +n02405101 +n03108455 +n03594523 +n04489695 +n03892425 +n13032618 +n04409011 +n07590752 +n15092942 +n03914583 +n13066448 +n03532919 +n10639637 +n04566561 +n13223843 +n07904637 +n12347158 +n02720048 +n03901229 +n03936466 +n10574840 +n03782794 +n12397431 +n07908567 +n12580896 +n02697221 +n09791419 +n02577403 +n07870069 +n02136103 +n04318892 +n01462544 +n09747191 +n12287836 +n03067093 +n03934565 +n03543945 +n13126856 +n02240068 +n01585422 +n12413301 +n03246454 +n01876034 +n03635330 +n11680596 +n03228365 +n03082656 +n11609862 +n12859986 +n03934229 +n10233248 +n03166514 +n12166793 +n10115430 +n03327553 +n03373611 +n02967782 +n12338258 +n01604968 +n01323155 +n02590094 +n03044934 +n07866409 +n12291143 +n14900342 +n12094612 +n07845702 +n07926250 +n10750640 +n04359500 +n09797873 +n09953350 +n03561047 +n12122725 +n12725738 +n01453087 +n04977412 +n04575723 +n13219833 +n12161056 +n04273285 +n12482437 +n12863624 +n04953296 +n03390075 +n10188957 +n02874442 +n04236935 +n09990690 +n12866459 +n04075715 +n09725000 +n12794367 +n12461673 +n03050453 +n03677115 +n12427391 +n07736371 +n02973236 +n02406749 +n12322699 +n12815198 +n10680796 +n03268311 +n02405799 +n12302248 +n09791014 +n01545574 +n07740033 +n07862095 +n09901337 +n04390577 +n03597916 +n12110085 +n11802586 +n04205505 +n07696527 +n12076852 +n04344003 +n03326660 +n02823586 +n03042139 +n01565345 +n07905296 +n01454545 +n07650903 +n07905386 +n12530629 +n02841187 +n02943964 +n03329536 +n09681234 +n03479121 +n03770085 +n04147793 +n11552133 +n03774327 +n13197507 +n07901355 +n10400437 +n07837912 +n02310941 +n07845087 +n02239774 +n04976319 +n03960490 +n05239437 +n06275471 +n01633406 +n04257223 +n12009420 +n10483138 +n02775897 +n07866151 +n07922512 +n02666624 +n03944024 +n03842377 +n01832493 +n07855907 +n03968728 +n04492060 +n07879072 +n11635830 +n11802800 +n02357911 +n02431628 +n03730494 +n13099999 +n07768230 +n13147270 +n12331655 +n10237676 +n11855553 +n09759501 +n10620586 +n13181055 +n12309277 +n13183489 +n04382695 +n07679034 +n10495756 +n02173113 +n12764202 +n03683457 +n10298912 +n07680313 +n10160280 +n02205673 +n12053690 +n11653904 +n02931294 +n04093775 +n12856479 +n02427470 +n07608866 +n09954639 +n11639445 +n03364599 +n09924106 +n09683924 +n10419472 +n03089753 +n12620969 +n07604956 +n12940609 +n12564083 +n03514894 +n10343355 +n13068255 +n03805280 +n12793284 +n03140652 +n02666501 +n11717577 +n04267435 +n04593185 +n12820853 +n03934311 +n02630615 +n07767002 +n07723968 +n01631354 +n07931452 +n12414818 +n03097673 +n09944430 +n04457474 +n11850521 +n12227658 +n10131815 +n12408717 +n03566730 +n12777680 +n06273555 +n04357531 +n03759243 +n09861599 +n03015851 +n04175039 +n03392741 +n07859796 +n07741138 +n04474187 +n02266864 +n04553561 +n02667244 +n12720200 +n12432356 +n07806120 +n10362557 +n11929743 +n07765862 +n02963987 +n02762371 +n02747672 +n04289195 +n04056413 +n03039493 +n03894677 +n12338655 +n04422409 +n12079120 +n10252222 +n10168837 +n12919847 +n10297841 +n01340014 +n11710827 +n10167838 +n12278107 +n01384164 +n10498986 +n02742468 +n02899439 +n11752937 +n12107710 +n12315598 +n03985441 +n07605804 +n07686202 +n12884100 +n13121349 +n11725311 +n10420507 +n11706761 +n01381044 +n03331599 +n12336333 +n10185483 +n07880880 +n01782516 +n12615232 +n03175457 +n12657082 +n01750437 +n07918879 +n13213066 +n12927494 +n02910542 +n06273986 +n02161338 +n10235024 +n12180168 +n03659950 +n02160947 +n11861853 +n09866817 +n09279986 +n12393269 +n01552034 +n05526957 +n02956883 +n12818966 +n09753792 +n03114236 +n12273344 +n12546617 +n13177048 +n02129991 +n01731941 +n01628770 +n12774641 +n07685546 +n03253279 +n10678937 +n12579038 +n08673039 +n01392275 +n02379081 +n10530150 +n12851469 +n12414449 +n11694664 +n11877283 +n09708889 +n03585438 +n00483605 +n12332555 +n03323096 +n07851767 +n02417663 +n10667863 +n02856237 +n09269341 +n01596608 +n09720033 +n13160604 +n04443164 +n02814428 +n11622771 +n10328123 +n04338963 +n01794651 +n12069217 +n07762740 +n02935387 +n11897116 +n10569179 +n12749852 +n10745006 +n07823280 +n12162425 +n09801533 +n03772269 +n04518643 +n07916319 +n12771597 +n02147173 +n10342992 +n03795123 +n11646344 +n12847927 +n07686021 +n12383894 +n04465050 +n14564779 +n04212467 +n12274863 +n02380052 +n04329958 +n12034384 +n04213353 +n04366033 +n04955160 +n02778294 +n12890685 +n03028785 +n03097535 +n04533594 +n01750167 +n01415626 +n12276477 +n07729926 +n07711371 +n12843970 +n10500419 +n12891093 +n03840823 +n12509665 +n11878101 +n04315342 +n07685031 +n12305819 +n10039271 +n12264512 +n03911866 +n13919547 +n12413419 +n03785721 +n02599347 +n03786194 +n04018155 +n12856287 +n09607903 +n02396088 +n10212501 +n10313000 +n07683617 +n03586219 +n03890233 +n03156767 +n12033709 +n01648139 +n04399846 +n10671736 +n07698672 +n10791115 +n07708124 +n02709908 +n04266968 +n01758141 +n10058962 +n09444783 +n03668067 +n02838345 +n02388143 +n12893993 +n12590499 +n01462042 +n02689434 +n13209808 +n04075291 +n02412629 +n01953594 +n03906463 +n03043423 +n02200509 +n10152763 +n12504570 +n04396808 +n03382413 +n03618101 +n02767147 +n02390101 +n03450974 +n12778398 +n03625539 +n02574271 +n04113316 +n07572616 +n11809437 +n04119230 +n03829954 +n10500603 +n04258732 +n02731900 +n10174330 +n01574801 +n08663703 +n12558230 +n03981760 +n07732904 +n11875523 +n11823436 +n03238286 +n03079494 +n04281260 +n07873057 +n11686912 +n10568608 +n07593004 +n04271531 +n10037922 +n07838551 +n03615300 +n12624568 +n12940226 +n05242928 +n03680734 +n01589893 +n11652376 +n11893640 +n04119091 +n09696763 +n07851554 +n02660640 +n12124818 +n10370955 +n02663211 +n02414209 +n13187367 +n03258577 +n04375241 +n07617932 +n12240477 +n03417202 +n07595649 +n03839424 +n03087245 +n02431441 +n04396335 +n03484809 +n03426285 +n03592931 +n02912319 +n03488887 +n12187891 +n07592400 +n12918609 +n07858114 +n07567980 +n01548694 +n02726210 +n02406859 +n10147262 +n05458576 +n02848921 +n03503233 +n02587618 +n03465151 +n03582508 +n11654293 +n03695452 +n02197185 +n04223170 +n10243273 +n03149135 +n02842809 +n03669534 +n03857291 +n02147328 +n12278865 +n12733428 +n03264906 +n09924195 +n10432189 +n12203896 +n03892728 +n12360958 +n10418735 +n01650901 +n12420722 +n03341606 +n02557909 +n07751858 +n03483971 +n12019035 +n03991202 +n02072040 +n03129848 +n04505345 +n02405440 +n03901974 +n11656123 +n11552976 +n10291822 +n10108018 +n09902731 +n03325691 +n12646072 +n04134170 +n12097396 +n07564008 +n01624305 +n03421117 +n02776007 +n10792856 +n07818133 +n03227184 +n10198437 +n04157099 +n12743009 +n07820960 +n12749456 +n13035925 +n05262698 +n03422771 +n02878628 +n12140903 +n07820297 +n03524745 +n09901921 +n03170872 +n10039946 +n12638964 +n11989087 +n03461988 +n04287451 +n04298053 +n07882420 +n04002262 +n02734835 +n11707827 +n07756641 +n12808007 +n10069981 +n12637123 +n12947895 +n04363082 +n04292080 +n11858077 +n04535252 +n12646397 +n12283147 +n12321077 +n02746595 +n02895328 +n07624924 +n12537253 +n11952541 +n02181477 +n01440160 +n03878828 +n12861541 +n02869563 +n04242084 +n03197201 +n09396608 +n04291992 +n07845863 +n04314522 +n12843557 +n04029647 +n12146654 +n13147386 +n12954799 +n11920133 +n03038480 +n03213715 +n02971473 +n04149374 +n04230387 +n00444340 +n11859275 +n07564796 +n02948403 +n10186068 +n04315713 +n02366002 +n02670935 +n13208302 +n10225931 +n07826340 +n04102872 +n02259708 +n11855842 +n09941089 +n08896327 +n10237464 +n12084158 +n03764995 +n03627954 +n12384375 +n10341343 +n07876189 +n04573379 +n07904293 +n07840520 +n12038038 +n03005147 +n10483799 +n02978367 +n01484285 +n13094273 +n04539053 +n01748389 +n10146816 +n07815839 +n12991837 +n03294604 +n03588841 +n04055180 +n03209477 +n09917345 +n04393913 +n12337391 +n12126084 +n01882125 +n07688130 +n02814116 +n09640715 +n12679593 +n12596345 +n03029925 +n11761650 +n04457157 +n12683096 +n07709881 +n03841290 +n13157684 +n07927836 +n03523134 +n03690279 +n10187491 +n12451070 +n02682311 +n03978815 +n11806679 +n07808022 +n01386354 +n03622526 +n02369293 +n11885856 +n02289610 +n12663359 +n02624987 +n13173488 +n03027001 +n07896765 +n11935330 +n07814790 +n04242704 +n09959142 +n07589543 +n03551582 +n07843117 +n03556992 +n02060569 +n04000998 +n03825271 +n11946918 +n02874750 +n03479502 +n09919451 +n02176747 +n02080713 +n03400972 +n10222170 +n07926785 +n07852302 +n03012373 +n10438842 +n12868019 +n03634034 +n04210591 +n07853560 +n12374862 +n09248399 +n04355115 +n12908093 +n12906498 +n12875269 +n02791665 +n03146777 +n02854378 +n12414159 +n07821610 +n07595180 +n12238913 +n12141385 +n10761190 +n12165758 +n01653223 +n12956367 +n03695753 +n12416703 +n12346813 +n03405111 +n04304215 +n01624212 +n12674895 +n09850760 +n12407715 +n04156040 +n11610437 +n03395256 +n09970822 +n04229959 +n02530831 +n07870894 +n12098524 +n12828379 +n04057215 +n10751152 +n10053439 +n03674270 +n07869291 +n12256920 +n02535163 +n04282231 +n02136452 +n02365108 +n10328328 +n02315487 +n03325403 +n09231117 +n03342657 +n09980985 +n10702167 +n11961871 +n02065263 +n12857779 +n03219612 +n07805966 +n10699981 +n07691863 +n12831932 +n04179126 +n10208189 +n09765118 +n07922147 +n01631512 +n01947997 +n01405616 +n01892030 +n07827896 +n12964920 +n07749870 +n03276696 +n10020670 +n11828577 +n07624666 +n10590146 +n02407521 +n10253703 +n03270854 +n11610047 +n12981443 +n12413642 +n12302565 +n03177059 +n04594114 +n10227985 +n07728391 +n10395073 +n02810270 +n03569293 +n07812046 +n03843316 +n12477401 +n03802643 +n07618029 +n10755648 +n12837803 +n12454556 +n01636127 +n02809241 +n03270165 +n12035631 +n02962414 +n09750641 +n01793085 +n04346003 +n07922041 +n04164002 +n12499979 +n03301291 +n07921834 +n09656077 +n07599161 +n13155611 +n10194231 +n10063635 +n03601442 +n10366276 +n00475661 +n03943714 +n10377291 +n02624551 +n02568447 +n07589458 +n09691858 +n02685995 +n11919975 +n01690466 +n13211020 +n04114069 +n10530383 +n04200908 +n12631932 +n07916437 +n03219859 +n07918309 +n10368291 +n10253479 +n03317889 +n13206178 +n02821415 +n10592811 +n12557064 +n12872458 +n10212231 +n07926346 +n09695514 +n09741816 +n03964611 +n07812913 +n09703708 +n02587479 +n10593521 +n03485309 +n03776877 +n12289433 +n07716504 +n10580030 +n03061893 +n03206158 +n09710041 +n04266849 +n07864065 +n12767648 +n02333190 +n12295429 +n02406432 +n01799679 +n07861983 +n02201626 +n03441582 +n03653975 +n02834506 +n12263204 +n10672662 +n03072682 +n03410423 +n11620389 +n04542095 +n07910970 +n03697913 +n02706806 +n09736798 +n12318965 +n07938594 +n12032429 +n03191776 +n04210288 +n01422335 +n03236093 +n11881189 +n02247216 +n12338146 +n03104512 +n00474881 +n04172230 +n01461315 +n04400109 +n10646140 +n02215621 +n10096126 +n03019806 +n11809754 +n02492948 +n10741367 +n10308504 +n07875560 +n02523110 +n07738224 +n02015797 +n10499631 +n03025165 +n03284308 +n03508881 +n10441037 +n10757492 +n07608721 +n09755241 +n04264361 +n04394421 +n03776997 +n03175843 +n04476526 +n02523877 +n13196369 +n10190122 +n03172738 +n02709763 +n02070624 +n04563560 +n04017807 +n03824589 +n07817758 +n03222722 +n01542433 +n13173259 +n04458201 +n12869668 +n12580786 +n02407763 +n09760913 +n10530571 +n11752798 +n09612700 +n07601175 +n11632376 +n10641223 +n03158668 +n03411208 +n01413457 +n03684740 +n10248008 +n12656528 +n11849271 +n07771891 +n12067433 +n12389727 +n11734698 +n04042204 +n07825399 +n12621945 +n07624757 +n03180732 +n09741331 +n10246317 +n04030414 +n07821107 +n04524716 +n03789603 +n12867449 +n10249869 +n02434415 +n07614103 +n03333349 +n04602840 +n09923996 +n02658811 +n13033879 +n03663433 +n02873623 +n07837545 +n12436907 +n02675077 +n01500854 +n04435552 +n01790304 +n11687789 +n03443543 +n09733459 +n01606177 +n12245885 +n11721642 +n02201497 +n12010815 +n04594742 +n02755984 +n07927716 +n04245218 +n03134118 +n13214485 +n12294542 +n12713521 +n03556173 +n12650038 +n07719058 +n04319774 +n10443830 +n10019187 +n09720702 +n07926442 +n10402709 +n03989777 +n11699751 +n09613118 +n02965122 +n04221076 +n01861330 +n12837052 +n02975589 +n09668437 +n03012499 +n01418498 +n12451566 +n03585778 +n07692517 +n09672590 +n09741999 +n09748648 +n07621264 +n03482001 +n10185148 +n01542168 +n12536291 +n07846557 +n11840476 +n03130866 +n02631775 +n11730015 +n03715275 +n07680168 +n12175370 +n05427346 +n03665232 +n08611421 +n11730458 +n02413484 +n09783884 +n07888378 +n04611351 +n02247655 +n02136794 +n11649359 +n01382033 +n07889193 +n10405540 +n03510384 +n04420720 +n03585875 +n03812789 +n01835769 +n12139921 +n09762011 +n10103228 +n03477410 +n11930788 +n10064831 +n12311045 +n07681805 +n03136504 +n12887713 +n03886940 +n03130233 +n10197392 +n12333961 +n07672914 +n12723062 +n12599661 +n04268799 +n03696909 +n12809868 +n12452256 +n10710778 +n02571652 +n12117326 +n02450677 +n03041265 +n12544240 +n01966377 +n10252354 +n02378625 +n09814488 +n10569011 +n13067330 +n07928998 +n07890970 +n02187279 +n02592371 +n07846802 +n03475961 +n05448704 +n10410996 +n02851795 +n10093167 +n12468719 +n09876701 +n03057724 +n03469031 +n02344270 +n04248209 +n02687682 +n04467899 +n12897788 +n03436656 +n12539832 +n09906704 +n03190458 +n11843441 +n12130549 +n11823756 +n03153246 +n03684489 +n04160036 +n02908951 +n12855365 +n03518230 +n12225222 +n12933274 +n10432957 +n02921406 +n10156831 +n12239647 +n02826812 +n03411927 +n11602091 +n13200986 +n04244847 +n01330126 +n14938389 +n03001540 +n04387531 +n03423099 +n07608533 +n11723986 +n07600394 +n12529500 +n02403820 +n02587300 +n10333317 +n07935288 +n12680652 +n01449980 +n12153914 +n07803310 +n11741797 +n01881857 +n13081999 +n08644045 +n02061217 +n02173784 +n02660519 +n03104019 +n13137951 +n04538403 +n02621258 +n04515729 +n04165945 +n11919761 +n13078021 +n07861247 +n11959259 +n11801665 +n04070545 +n13210597 +n10218043 +n10717337 +n01365885 +n10718952 +n11979187 +n03880032 +n03798610 +n03477303 +n01876667 +n11860208 +n03401721 +n03360133 +n13230843 +n13194758 +n13190060 +n02564935 +n13894154 +n12754311 +n07697408 +n13171210 +n02035402 +n03736147 +n10396337 +n04554998 +n02793930 +n04126852 +n03654826 +n09411295 +n06255613 +n01680983 +n10261862 +n01581874 +n10378780 +n10646641 +n03539103 +n03351151 +n04349913 +n03906106 +n02370525 +n03319576 +n04113968 +n09693244 +n02945964 +n03344509 +n04117216 +n03889626 +n03557840 +n09800469 +n04280487 +n07890890 +n12147835 +n12295237 +n03883664 +n04436992 +n02922877 +n10099002 +n01988203 +n10056719 +n11646517 +n03672521 +n04568713 +n10111358 +n03606347 +n04047733 +n12320627 +n10251612 +n10460033 +n01742447 +n11917835 +n10443032 +n13079567 +n04363671 +n10788852 +n10482587 +n03308614 +n12741586 +n12938667 +n04539407 +n01630148 +n02303777 +n13050940 +n04552551 +n02341288 +n04098169 +n04110439 +n11625391 +n12259316 +n02822762 +n10631131 +n04089152 +n03571439 +n04558199 +n12656909 +n03170292 +n02877642 +n12771890 +n03033267 +n12658603 +n13354021 +n12855886 +n11840246 +n03619050 +n07727252 +n12932706 +n13874073 +n01315805 +n02948942 +n12048928 +n03146449 +n10656969 +n09872557 +n03906590 +n04454792 +n12500309 +n04239333 +n01815036 +n09644657 +n10497645 +n02918455 +n07812662 +n04240434 +n10804636 +n11967878 +n04184095 +n11834272 +n05244755 +n02299039 +n12665659 +n12144987 +n07607492 +n11887750 +n13083461 +n04577139 +n09670909 +n07876893 +n02875948 +n04069582 +n10458111 +n10361194 +n09389867 +n01651778 +n11933387 +n13193143 +n12834190 +n03516266 +n02184589 +n10041373 +n02809605 +n04064213 +n04957589 +n12643113 +n02582721 +n07911061 +n07921360 +n10369417 +n10527147 +n04104925 +n03707372 +n01386182 +n10374849 +n09902851 +n08559155 +n02332447 +n11649150 +n11722036 +n01823740 +n04592356 +n10002257 +n10661732 +n07562379 +n07597263 +n04036776 +n13112201 +n09842288 +n07738105 +n04545984 +n09635973 +n02885233 +n02756854 +n07808479 +n03029296 +n01543383 +n02884450 +n09843716 +n04224395 +n10576676 +n10140051 +n07919894 +n07806879 +n10212780 +n09478210 +n12017127 +n03770224 +n07606191 +n03555217 +n09715165 +n12270460 +n12129738 +n11739365 +n02303585 +n07818029 +n05314075 +n03019304 +n09859975 +n09454744 +n13151082 +n12586989 +n00455076 +n07741357 +n04957356 +n08659242 +n04577293 +n04126244 +n03131193 +n12428242 +n03569494 +n03781594 +n07743384 +n02892392 +n12576695 +n12199982 +n07693439 +n07719756 +n11884384 +n03043798 +n12351091 +n03690168 +n02214499 +n01839949 +n01831360 +n12642964 +n02957862 +n03125588 +n12883628 +n04002371 +n10747965 +n09744462 +n02853745 +n13030337 +n12156679 +n02761034 +n12587487 +n03374570 +n12728322 +n01731764 +n07918706 +n03696445 +n03185868 +n02805283 +n03868763 +n02202124 +n12369665 +n12449934 +n12650229 +n02656301 +n07743723 +n11702713 +n02927053 +n03916385 +n01486010 +n03986071 +n04188064 +n13897528 +n12414329 +n07718068 +n07837755 +n11735570 +n10464542 +n04091466 +n01315581 +n10374943 +n03989898 +n13220525 +n04076052 +n04062179 +n02414442 +n04414101 +n04446162 +n00480885 +n03536568 +n03773835 +n10728998 +n12643877 +n02255391 +n03799610 +n07847585 +n00446411 +n11910666 +n03139998 +n02296276 +n02889996 +n02786611 +n10363445 +n07854348 +n08583682 +n09912681 +n07896422 +n02368821 +n11935953 +n12185254 +n11738547 +n03809211 +n02448318 +n13066979 +n01987076 +n12009047 +n12839574 +n13174823 +n07902520 +n03369866 +n13209129 +n02593191 +n03853291 +n02620578 +n10071332 +n01813658 +n09895480 +n10134760 +n01316734 +n07845166 +n03175983 +n13132156 +n12814960 +n12883265 +n03637787 +n04310507 +n04133114 +n03900194 +n04129688 +n04449550 +n01805321 +n01717467 +n01573627 +n12271451 +n11722621 +n09976917 +n12232280 +n12905135 +n03451253 +n01655344 +n12346986 +n11987511 +n10517283 +n02941845 +n12730370 +n03121190 +n07917874 +n10023656 +n10151133 +n07695187 +n03258456 +n10639238 +n10682713 +n02085019 +n12343753 +n10749928 +n04595611 +n04410565 +n08500819 +n07719980 +n04016479 +n03232417 +n03469832 +n09834885 +n07925327 +n10094782 +n03632100 +n12734215 +n09845849 +n04047139 +n10743124 +n02604954 +n12270278 +n03036244 +n11991777 +n10168012 +n02561803 +n10531109 +n10344319 +n03804211 +n10513938 +n10732967 +n09917481 +n02950482 +n03148808 +n07910245 +n07925423 +n07889990 +n04302988 +n07745357 +n04346511 +n07573563 +n02564403 +n12084400 +n10030277 +n09815455 +n04388473 +n12404729 +n10576316 +n12072210 +n11811059 +n01824344 +n03556811 +n03175301 +n07586485 +n13137010 +n11986729 +n04967561 +n03881404 +n07692114 +n07874995 +n02770585 +n07853345 +n02775689 +n04328580 +n01323781 +n07773428 +n02414043 +n02794474 +n02352932 +n07569873 +n12374705 +n03606106 +n04267246 +n04369485 +n11934239 +n12705698 +n11841247 +n07868045 +n03525693 +n12358293 +n02937010 +n09658398 +n12711182 +n03516647 +n04591631 +n10228712 +n11930353 +n03471779 +n12594324 +n02251593 +n04455579 +n02542017 +n03381450 +n03320845 +n12364940 +n09657748 +n12412987 +n01840412 +n10570704 +n10117267 +n03251280 +n10195261 +n12178129 +n12285049 +n02177775 +n10117415 +n03707766 +n04475309 +n05604434 +n03999064 +n12127575 +n01972131 +n09793946 +n01635176 +n02791532 +n07564101 +n07876460 +n02813981 +n10764719 +n03638743 +n12761702 +n02125689 +n11657585 +n09923003 +n13069773 +n02683183 +n04324515 +n11936946 +n12862828 +n02659808 +n02619861 +n13175682 +n11648039 +n07768139 +n12512674 +n12108613 +n02947977 +n12899971 +n03845107 +n07689490 +n02081927 +n07619508 +n10248377 +n10300041 +n10761326 +n09655213 +n02675522 +n04963111 +n01995686 +n03256631 +n10684630 +n04471912 +n12728864 +n03870546 +n02829246 +n09725546 +n03409920 +n13194918 +n10055297 +n02513248 +n01462803 +n11782266 +n13094145 +n07839478 +n13916363 +n07932454 +n09722817 +n07774479 +n10386874 +n12832822 +n01599388 +n02964295 +n04349189 +n07689313 +n11653126 +n02309841 +n02064000 +n04410663 +n04562122 +n02358712 +n09901786 +n10441124 +n12882158 +n12815668 +n10159289 +n01641930 +n03315990 +n12271187 +n10277638 +n07815163 +n12903014 +n07915366 +n04412300 +n01324799 +n03408264 +n09452291 +n03019198 +n11890884 +n10355806 +n03186199 +n04013600 +n12541157 +n06259898 +n06273294 +n11946051 +n01671705 +n04415257 +n01905321 +n04050600 +n12604460 +n04051439 +n02929184 +n11765568 +n10025060 +n02396796 +n04033287 +n13027557 +n03127531 +n10308066 +n09729062 +n01593553 +n02476567 +n07609728 +n12970293 +n01419888 +n03215749 +n01684741 +n13067672 +n03870290 +n07846359 +n12961536 +n03356559 +n07727140 +n09843602 +n02378755 +n12044041 +n01977485 +n07718920 +n12060546 +n04265428 +n12237855 +n04006067 +n10227266 +n04361937 +n12134486 +n10097842 +n02264591 +n03912821 +n07594155 +n03116163 +n11771924 +n04155457 +n12394118 +n10507380 +n01844746 +n11901452 +n03024233 +n03383562 +n11806814 +n10062716 +n04204755 +n08613733 +n12907671 +n03533654 +n09826605 +n03109033 +n07606419 +n03537085 +n11615812 +n07695504 +n11694300 +n04520962 +n09971839 +n02664285 +n03402511 +n02061560 +n13133140 +n03548195 +n12877493 +n02425086 +n12845187 +n12488454 +n02975994 +n02071028 +n01457407 +n03685486 +n07605282 +n07771405 +n07827554 +n10538733 +n03438780 +n04379096 +n12686496 +n10001764 +n11848867 +n12125001 +n09886540 +n03275566 +n01442710 +n12789554 +n07858197 +n12722071 +n12868880 +n10441694 +n12409651 +n07727741 +n12289585 +n04069166 +n12686877 +n03723439 +n07815956 +n12543455 +n10778044 +n02200630 +n10074841 +n12640284 +n12589841 +n07592317 +n07866571 +n12712626 +n04228422 +n11711289 +n03590475 +n13081229 +n03045800 +n03639230 +n02874214 +n07615954 +n03204134 +n12053962 +n12769219 +n15006012 +n09873769 +n11818636 +n01959029 +n03349599 +n12227909 +n07576969 +n03638180 +n07742224 +n03390673 +n02344175 +n03770520 +n00447361 +n13235319 +n01983674 +n10061882 +n04267165 +n12493868 +n12713358 +n02930339 +n10493419 +n12918810 +n02582220 +n12248359 +n02644501 +n04596492 +n04538249 +n07905618 +n13230190 +n07808268 +n15005577 +n09351905 +n12730544 +n11937023 +n04024137 +n02238358 +n11646955 +n11618079 +n09849990 +n04060448 +n04220805 +n12725940 +n12004120 +n01484562 +n02669442 +n12132956 +n01756916 +n03980986 +n02256172 +n07716750 +n12119390 +n04047834 +n11934041 +n12828977 +n03648219 +n11873612 +n12909614 +n04397860 +n03908111 +n03261395 +n03695616 +n11668117 +n12014355 +n02896074 +n03988758 +n04426184 +n10328696 +n02477028 +n04507326 +n04320871 +n03256472 +n01919385 +n03988926 +n13182164 +n07826250 +n03207548 +n01396617 +n04369618 +n07913774 +n13229951 +n03410022 +n12728508 +n01997119 +n03598783 +n01341090 +n03879456 +n01736796 +n02864122 +n13879816 +n02684962 +n12246037 +n02433729 +n04364397 +n09881358 +n02950120 +n03326371 +n02243878 +n01790812 +n12990597 +n03330947 +n07764486 +n03332173 +n10006177 +n03347472 +n07619301 +n10106509 +n12365285 +n01732989 +n07678586 +n04098795 +n07733847 +n03994297 +n12872914 +n02762909 +n07766530 +n13198482 +n02395855 +n12273515 +n04487894 +n07847047 +n12488709 +n02859557 +n04255768 +n02360933 +n03267696 +n03152951 +n10188715 +n10520544 +n13065514 +n02900594 +n03699754 +n01319187 +n01949499 +n10417424 +n01603000 +n12062105 +n09683180 +n09863339 +n01880716 +n10702615 +n03893935 +n10495555 +n04131499 +n02957252 +n02113892 +n07724078 +n12246941 +n04303095 +n01751215 +n04213530 +n12117695 +n12418507 +n01922948 +n12131405 +n13188767 +n01481498 +n03174079 +n02407172 +n11613867 +n10152616 +n10119609 +n04158250 +n11695085 +n07855105 +n02854630 +n03768683 +n12739966 +n12266984 +n12819141 +n12732605 +n13205249 +n11917407 +n01607429 +n02694279 +n07815294 +n06614901 +n07846471 +n12119717 +n02595339 +n12366186 +n10693235 +n12263410 +n12484244 +n10337488 +n04146976 +n01469723 +n07872748 +n03238879 +n12000191 +n07846938 +n03116008 +n12139196 +n04013176 +n10317963 +n12140511 +n02065726 +n01649556 +n10316862 +n01755952 +n04385079 +n12770529 +n02814338 +n01675352 +n11874423 +n01369484 +n10537708 +n07618281 +n07821404 +n02297819 +n03238762 +n03357081 +n02628600 +n07830986 +n12507823 +n04431925 +n11955532 +n03429771 +n10281896 +n12383737 +n12760875 +n09673091 +n12892013 +n06625062 +n04503269 +n03674842 +n12338979 +n04268275 +n12033139 +n11767877 +n07812790 +n12676134 +n04037873 +n10097477 +n12310638 +n12258101 +n09391386 +n13196738 +n13866626 +n12720354 +n10106995 +n07843220 +n03878294 +n04101375 +n07733217 +n10220080 +n04601938 +n10778148 +n12973937 +n10556825 +n12256708 +n12583855 +n04259202 +n07628181 +n04226962 +n02777402 +n09674412 +n12188635 +n03776167 +n04504038 +n04156591 +n02270945 +n02264021 +n07826653 +n02980203 +n02059852 +n02102806 +n12921660 +n04477725 +n10107173 +n12837466 +n02697022 +n04350688 +n12110236 +n02177196 +n07899976 +n12639910 +n02368399 +n10009162 +n03950647 +n09248153 +n02425532 +n04044955 +n11933257 +n03460899 +n10147710 +n02379743 +n02413917 +n02890804 +n12915140 +n02146879 +n07915800 +n01787006 +n03646809 +n11677902 +n04065909 +n02088992 +n02887832 +n10115946 +n02306825 +n03719560 +n10456696 +n03758220 +n12625003 +n04021503 +n07563366 +n02531625 +n10304650 +n12855710 +n09735654 +n07853762 +n03512030 +n12898342 +n02297938 +n12618727 +n04082344 +n12953712 +n12617559 +n03035715 +n02532451 +n05399356 +n03602686 +n10082423 +n04607759 +n07581607 +n07594737 +n04030965 +n03464628 +n12103894 +n03039353 +n03522990 +n02964934 +n03169063 +n10153865 +n09653144 +n09941571 +n12907057 +n07768318 +n02600798 +n02187150 +n01811243 +n12252383 +n04495555 +n07678953 +n13181244 +n13069224 +n13184394 +n12765402 +n03471347 +n10208847 +n03697366 +n09840435 +n02506947 +n09709673 +n07928578 +n11935715 +n07848936 +n02757927 +n01999767 +n02245443 +n10260473 +n13898645 +n02701260 +n07840219 +n11785875 +n12385830 +n12017664 +n12145148 +n04530456 +n01929186 +n02384741 +n04113038 +n03296217 +n09723819 +n03766697 +n12143215 +n09929202 +n02684248 +n12119539 +n03566555 +n12941220 +n04124573 +n10750188 +n07733005 +n04230707 +n03829857 +n07756838 +n12244458 +n12543826 +n03514129 +n02762169 +n04435870 +n03342863 +n09745324 +n12369476 +n11652039 +n03915320 +n07746749 +n07608641 +n12642600 +n02389943 +n12137791 +n04111962 +n12493426 +n12454793 +n01455317 +n10728117 +n03281524 +n12195734 +n12353431 +n02477329 +n02678010 +n04557522 +n10162354 +n14942411 +n07806043 +n12274151 +n09835153 +n03983499 +n04086663 +n07851926 +n07868684 +n11926976 +n03972146 +n04310604 +n09675799 +n13880704 +n13173132 +n07577918 +n10720964 +n11937102 +n03349020 +n12340581 +n03725506 +n03477143 +n10578162 +n01731137 +n03382104 +n11616852 +n01493829 +n09327077 +n03856335 +n03321843 +n02375757 +n02118643 +n08500989 +n03496486 +n04140777 +n12858987 +n02845293 +n04093157 +n07819682 +n10394786 +n12289310 +n02901620 +n01559160 +n07919165 +n12648196 +n11774972 +n11995396 +n10543937 +n10154013 +n03977158 +n01884476 +n12266528 +n11906127 +n12661538 +n04396650 +n12761905 +n04175574 +n10181878 +n12017326 +n12876899 +n09744346 +n07741706 +n04451636 +n07735981 +n03751590 +n03140546 +n03070396 +n03091223 +n12071477 +n07562017 +n09981092 +n09847344 +n12552893 +n12371202 +n02245111 +n01598271 +n04400499 +n02298095 +n15048888 +n02967170 +n04030161 +n10676434 +n01556514 +n13235766 +n02538562 +n12603672 +n03941586 +n02449183 +n07567611 +n12923257 +n02296021 +n11730933 +n12497669 +n02917742 +n07875926 +n02714535 +n13142182 +n02878107 +n07861334 +n02682811 +n03730655 +n03681813 +n12970733 +n02132320 +n12436090 +n07931280 +n04295353 +n12982590 +n01783017 +n13164501 +n02424589 +n01499732 +n12650805 +n04543509 +n10369699 +n03439631 +n13160116 +n07831663 +n05449196 +n13025854 +n10169241 +n02847461 +n10734963 +n13213397 +n03343234 +n12275317 +n02793414 +n04300509 +n01803893 +n11617878 +n02179192 +n03637480 +n04514648 +n03087521 +n10478827 +n11757190 +n12919195 +n04532504 +n01736375 +n04015786 +n04545471 +n12668131 +n04472961 +n14786943 +n07584938 +n02498743 +n07744559 +n10010062 +n10101308 +n07832099 +n02601767 +n10473453 +n02451575 +n02496052 +n03696746 +n12669803 +n07904072 +n04290762 +n11737125 +n07760755 +n12553742 +n12068138 +n12630999 +n02390938 +n02202678 +n02216740 +n02679961 +n13173697 +n11828973 +n02287987 +n04585318 +n10360366 +n07745661 +n03474352 +n07934800 +n12677612 +n03692272 +n13092240 +n04230487 +n11846312 +n12433952 +n11793403 +n03056873 +n05454833 +n12517077 +n12682882 +n02649218 +n09425344 +n07878283 +n02795978 +n10064977 +n12754174 +n02945813 +n01750743 +n03150661 +n13880415 +n12337800 +n04017571 +n09754907 +n04456734 +n02967540 +n10621400 +n11744471 +n01971620 +n04148285 +n10781817 +n11991549 +n12305654 +n03943833 +n10330931 +n12918991 +n01783706 +n11933099 +n12931231 +n07589967 +n09666349 +n07853445 +n12714949 +n03548533 +n04158672 +n03809802 +n03080309 +n12800049 +n02578454 +n02834027 +n10067600 +n03044671 +n04198233 +n07930205 +n04357930 +n12221522 +n11957317 +n03085781 +n03723885 +n03614383 +n02661618 +n04292221 +n03426574 +n03838024 +n10442093 +n12399534 +n01450950 +n07876550 +n11937446 +n09870096 +n02631628 +n05460759 +n01710177 +n03660562 +n04283784 +n01497738 +n02232223 +n04209811 +n12837259 +n02864987 +n04499810 +n12654857 +n03493792 +n09688233 +n02312912 +n10057271 +n07606058 +n03258192 +n10507565 +n11930038 +n08679269 +n03812263 +n11662128 +n04085574 +n07643577 +n03981094 +n02796412 +n02513939 +n07686634 +n07936979 +n03168774 +n03816394 +n07625324 +n04138131 +n10383094 +n10222716 +n10381981 +n12254168 +n13223090 +n03056583 +n09910556 +n03277004 +n12649866 +n02089725 +n03688707 +n09665367 +n07849506 +n02843909 +n13141797 +n02477516 +n09710886 +n03835941 +n11734493 +n10778711 +n10007809 +n02038141 +n12766043 +n02353172 +n02030224 +n10762212 +n06274921 +n13033396 +n03560860 +n01961234 +n13868515 +n03216199 +n01553527 +n04429038 +n10211036 +n02150885 +n02435517 +n02755675 +n09699020 +n12566331 +n03909516 +n02903727 +n02594942 +n04173172 +n04125692 +n12251001 +n02412787 +n01649412 +n01411450 +n01774097 +n09912907 +n03162556 +n07566231 +n12267534 +n03928589 +n04142327 +n11771147 +n07832592 +n04155177 +n07937621 +n07839864 +n03201895 +n13095013 +n10298271 +n03059103 +n03784793 +n11925450 +n03288742 +n02809364 +n04108999 +n04449449 +n03726233 +n07854455 +n03692136 +n12018447 +n03374282 +n06008896 +n07598928 +n03577312 +n04604806 +n09892513 +n04370600 +n08238463 +n01793159 +n07822687 +n03242390 +n07685303 +n03822361 +n01996280 +n10505942 +n06596845 +n04219580 +n12056990 +n10579062 +n10240082 +n10298202 +n07711907 +n03905730 +n12222900 +n07598622 +n04415815 +n12389932 +n12154114 +n04210012 +n12500751 +n03729402 +n12122918 +n04572121 +n12804352 +n02415130 +n12780325 +n11639084 +n12768933 +n02253494 +n13217005 +n03567788 +n12304286 +n10703480 +n07766723 +n05455113 +n07741804 +n12186839 +n01687128 +n01350701 +n03260206 +n07876026 +n12528382 +n04125541 +n10457444 +n01606097 +n11717399 +n04598416 +n12899166 +n09748101 +n12160125 +n07608980 +n07843348 +n02409038 +n02571167 +n09980805 +n09706029 +n02495242 +n12765846 +n10373525 +n12321873 +n03047171 +n12365462 +n03752398 +n02662993 +n10316527 +n10728233 +n06273207 +n01733214 +n12297846 +n12755876 +n02428842 +n02289307 +n04536465 +n03253187 +n02297294 +n05584746 +n03117642 +n12189779 +n10338231 +n07599649 +n04559994 +n12710917 +n09966470 +n12470907 +n04499300 +n12403075 +n11837743 +n02269657 +n12599185 +n07618587 +n03996004 +n12851094 +n03392648 +n01319001 +n12826143 +n12369845 +n01814549 +n10056103 +n12854193 +n02267483 +n04019881 +n03490649 +n04268142 +n10801802 +n12315060 +n10149436 +n04563790 +n09865068 +n03000530 +n10657556 +n07840672 +n12118414 +n02856013 +n02900459 +n04094859 +n12079523 +n11827541 +n12236160 +n02904505 +n02846619 +n09842823 +n12926039 +n02146201 +n03195799 +n12815838 +n09899289 +n01483021 +n02519340 +n05453815 +n10329035 +n02494383 +n09742927 +n13220355 +n03212406 +n11759609 +n10061431 +n12095281 +n04262530 +n03799240 +n02426176 +n04608809 +n12230540 +n13880551 +n11741175 +n11858814 +n11723452 +n07590841 +n12604845 +n10342543 +n12760539 +n09270657 +n02563079 +n10643937 +n12843316 +n01651641 +n07838811 +n04359034 +n07758260 +n02762725 +n11726433 +n03114743 +n01952029 +n12321395 +n11930571 +n12337922 +n12427946 +n12001294 +n12551457 +n13235011 +n02290340 +n06419354 +n12408873 +n01741442 +n12308447 +n10243872 +n03658635 +n03694761 +n02570484 +n12912801 +n04158002 +n02417785 +n01332181 +n03703075 +n10283366 +n03142431 +n02779609 +n02300554 +n09868782 +n10323752 +n03166809 +n03394149 +n02827148 +n02186717 +n01350226 +n03344784 +n03555996 +n04498873 +n13157481 +n04519887 +n12028424 +n12349711 +n10471640 +n07741235 +n04032936 +n12357968 +n10228592 +n13178284 +n04168840 +n13239177 +n03561573 +n02566489 +n11807696 +n07681264 +n02566665 +n10456070 +n10063919 +n10492727 +n01788579 +n11977660 +n02036228 +n02738978 +n03989349 +n10332953 +n12949361 +n09901502 +n07839730 +n13146928 +n10152306 +n04170515 +n11602478 +n02522722 +n01333610 +n13030852 +n02143891 +n12807624 +n04542329 +n12243693 +n12036226 +n13917690 +n02553028 +n02752199 +n10594857 +n11627714 +n04348070 +n13171797 +n04612257 +n07934373 +n04536765 +n02244515 +n04526800 +n04546595 +n02551668 +n12143405 +n07871588 +n07858484 +n03628728 +n13179804 +n03242264 +n12089846 +n07588688 +n07620047 +n01647466 +n09685233 +n03467254 +n12666369 +n05449661 +n10694939 +n12886600 +n12256522 +n04006330 +n03317673 +n04316815 +n12222090 +n04022866 +n04088441 +n07617526 +n10782362 +n04355821 +n13901490 +n12508618 +n03849943 +n04503499 +n13193466 +n09754633 +n07583978 +n13911045 +n07643679 +n12054195 +n10692090 +n04032509 +n10146927 +n02031298 +n04002629 +n04035748 +n10712229 +n02866106 +n07909504 +n04540397 +n06266878 +n10219879 +n12567950 +n07853648 +n03191561 +n07856045 +n12646197 +n03317510 +n10515863 +n13198054 +n02808829 +n12889579 +n02698473 +n09924437 +n03595055 +n12306270 +n07857356 +n09715303 +n03024518 +n04323519 +n09629065 +n04178668 +n12748248 +n02308618 +n07873198 +n10564098 +n03007297 +n04036155 +n02143439 +n10507482 +n12267931 +n03956331 +n12888234 +n04066476 +n07813107 +n02736396 +n10306496 +n12324388 +n01744555 +n01649726 +n06596179 +n03616091 +n07754279 +n02072493 +n12408280 +n04314632 +n02412700 +n04030846 +n09833997 +n03599964 +n05258627 +n12572759 +n12136581 +n02419056 +n12453714 +n11652217 +n03878511 +n03907908 +n12223160 +n10514121 +n04153330 +n12163279 +n12623818 +n03495671 +n13222985 +n10354754 +n04365112 +n12384680 +n12538209 +n03105214 +n12534862 +n13869045 +n03945928 +n11613692 +n11892181 +n13002209 +n02685253 +n07598529 +n02629716 +n13202355 +n07927070 +n02176916 +n04370955 +n11988132 +n03246197 +n01440467 +n07620145 +n03940894 +n01897667 +n03408340 +n12602612 +n02539424 +n03863657 +n04559620 +n02604480 +n11822300 +n03518829 +n11619845 +n10504090 +n03341035 +n02908123 +n04281998 +n03277602 +n03865288 +n10074578 +n13902793 +n03054605 +n04404200 +n12786836 +n12235051 +n04035231 +n12009792 +n12705458 +n04378489 +n02476870 +n11954798 +n03573848 +n02087314 +n03162460 +n04363412 +n02261063 +n09953615 +n01947139 +n03044801 +n04287351 +n04479287 +n03861596 +n12510343 +n07854066 +n03027505 +n12161577 +n04197878 +n01812187 +n10015792 +n08685188 +n11737009 +n10333044 +n02730568 +n10290813 +n13096779 +n05257476 +n07917951 +n12121187 +n03517509 +n07932762 +n02336275 +n12159942 +n12105981 +n02562971 +n13882961 +n12016777 +n02793684 +n12717644 +n01380754 +n07724173 +n04055861 +n11831297 +n03059934 +n03370646 +n10065758 +n09459979 +n07913644 +n04322531 +n03457451 +n02567633 +n04240867 +n10693334 +n10556704 +n04614844 +n07909362 +n12082131 +n09268007 +n04359217 +n09883807 +n02292085 +n04052346 +n03431570 +n02843465 +n04584056 +n04432043 +n09846142 +n07864317 +n04475749 +n04227050 +n04280845 +n03535284 +n07890617 +n03217889 +n02806762 +n11967315 +n11762927 +n02501923 +n03442487 +n09690083 +n02964634 +n02920164 +n07855317 +n10196725 +n03042829 +n11662937 +n12183816 +n12311224 +n13884261 +n02243209 +n03140771 +n02385002 +n03071288 +n12936826 +n04583022 +n07859142 +n04578112 +n04467506 +n12938081 +n09982152 +n12555255 +n03335333 +n10104888 +n12151170 +n12709349 +n10456138 +n02237868 +n07620327 +n12561309 +n12341931 +n12350032 +n01775730 +n12950796 +n01440242 +n04261767 +n10568915 +n12285195 +n07589872 +n13112035 +n07840395 +n11750508 +n12286197 +n03336168 +n03325288 +n02551134 +n04293258 +n13130014 +n07733124 +n04451139 +n11985903 +n03602365 +n11722342 +n11944751 +n12897999 +n02277422 +n03101302 +n07608245 +n03531982 +n01997825 +n11713370 +n04442582 +n02833403 +n04427857 +n01648356 +n10645223 +n10414865 +n10696101 +n12885045 +n10037080 +n12218274 +n07570530 +n04493259 +n10659042 +n10577710 +n03141612 +n10582604 +n00446632 +n02834642 +n07568389 +n04583888 +n04096848 +n12879068 +n04495051 +n09837459 +n12216215 +n03702440 +n10174695 +n10559009 +n10577182 +n07686299 +n04269668 +n02404028 +n03720665 +n09885866 +n03082450 +n12492682 +n12780563 +n03703463 +n02644360 +n02307910 +n01374703 +n04402342 +n04264134 +n03158414 +n04443433 +n12522894 +n10803978 +n11706942 +n10751026 +n13143758 +n02972934 +n04174234 +n12718995 +n11994150 +n11545350 +n12526754 +n07753448 +n02870772 +n11942659 +n11744108 +n12735160 +n12229887 +n04970312 +n02874336 +n10721819 +n13193269 +n03330665 +n09865162 +n10306595 +n12161744 +n03303669 +n07846688 +n02168427 +n01961600 +n03559531 +n09826821 +n03413124 +n09695019 +n03783873 +n11863877 +n13874558 +n02283617 +n11895472 +n13182799 +n07854614 +n03283827 +n01397690 +n02650413 +n09809279 +n10290541 +n10383505 +n11724660 +n07689757 +n10181547 +n07620597 +n11979354 +n02771547 +n13061471 +n12631637 +n11966385 +n03969510 +n11735977 +n07621497 +n12956588 +n03217653 +n04546081 +n11696450 +n10300654 +n02032769 +n01654863 +n09779280 +n02390258 +n03887512 +n10489426 +n10745770 +n10713843 +n03602194 +n10710913 +n07864475 +n04486322 +n07915213 +n08663051 +n10236842 +n02390738 +n02388453 +n03598385 +n12228689 +n11771746 +n12803226 +n11242849 +n02378149 +n10427223 +n05448827 +n11870044 +n12477983 +n12311413 +n03500090 +n10280034 +n02685365 +n03652389 +n12728656 +n07695284 +n09961198 +n03780799 +n03935883 +n01612955 +n12475774 +n02701730 +n07833535 +n12584365 +n03902220 +n12727960 +n10619492 +n04450465 +n10646780 +n10110731 +n04142175 +n12296735 +n09337048 +n12681579 +n12819354 +n12541403 +n04305016 +n12798910 +n10321126 +n08618831 +n09721244 +n02225798 +n01637338 +n12218868 +n05545879 +n12022382 +n03972372 +n02505063 +n01694311 +n10695450 +n10081842 +n12297507 +n07592922 +n12118661 +n01952712 +n10517137 +n01340522 +n07719330 +n03729482 +n04168541 +n03090710 +n07873679 +n07828378 +n07728284 +n10343088 +n07869937 +n14585392 +n01453475 +n12095412 +n04973020 +n12810007 +n07564515 +n01599741 +n11629047 +n09937802 +n12450607 +n12460146 +n02292401 +n03632963 +n09617696 +n12545232 +n02874642 +n09934488 +n10091349 +n01447946 +n05469861 +n11830400 +n03382533 +n02608547 +n12697152 +n03542727 +n10716576 +n03664159 +n07568625 +n02976815 +n13147532 +n02336826 +n12432574 +n07686461 +n04107598 +n02505998 +n09849167 +n03688066 +n02836513 +n01576358 +n01893021 +n12017511 +n12065649 +n01714231 +n11662585 +n12827907 +n12954353 +n11936199 +n01368672 +n03843883 +n12184095 +n10058411 +n11684654 +n08506347 +n10579549 +n01423302 +n11604046 +n07613158 +n03605504 +n02090129 +n02284224 +n01958435 +n12664469 +n04459122 +n09617161 +n09780828 +n11830252 +n12870048 +n04247544 +n09871095 +n02962938 +n09933020 +n13064457 +n10341243 +n07694169 +n13200193 +n07765728 +n01524761 +n07730562 +n07751737 +n07740855 +n04192521 +n12593122 +n07841037 +n02809736 +n10604275 +n12512095 +n01907287 +n04592596 +n09823153 +n03181667 +n12449784 +n07908923 +n12365900 +n03053976 +n15060688 +n04165675 +n02530637 +n09816654 +n12540966 +n07934152 +n09290350 +n03455802 +n10111779 +n01351315 +n10281770 +n13862552 +n12435486 +n12370174 +n12296045 +n03493219 +n12363301 +n11973749 +n03939565 +n02938321 +n13209270 +n12604639 +n12657755 +n03604536 +n10328941 +n04278932 +n10376890 +n01884203 +n02061853 +n04256318 +n07831821 +n10585217 +n07591813 +n10210648 +n07739035 +n01632308 +n10319313 +n02861777 +n03821145 +n13029610 +n04239900 +n10313441 +n04951716 +n10628097 +n02368116 +n08571275 +n04433377 +n10458596 +n12435965 +n12448136 +n12129986 +n04295777 +n07898895 +n07854266 +n12327846 +n12318782 +n07825850 +n10414239 +n11731157 +n04409911 +n10655442 +n11829205 +n01738306 +n02840515 +n04150371 +n03369512 +n02645538 +n12773917 +n07818422 +n03227010 +n10303037 +n12942025 +n12406304 +n06616216 +n02435216 +n12981954 +n03683341 +n09703809 +n07722666 +n11817160 +n10110893 +n10228468 +n03572631 +n01378545 +n02130086 +n04388574 +n11960673 +n12956922 +n11924014 +n09895902 +n03426462 +n07759576 +n02563949 +n03466947 +n02522637 +n09480959 +n02033882 +n02451415 +n12677120 +n10580437 +n04425977 +n03057841 +n12285512 +n07614348 +n03144873 +n03391613 +n12366870 +n02304657 +n07863935 +n07909714 +n02413717 +n12591702 +n07838659 +n02967407 +n12016914 +n02735268 +n09470027 +n10222259 +n03899100 +n10513509 +n11620016 +n12600267 +n04368840 +n03016209 +n04085017 +n03215076 +n10238272 +n09782855 +n07586179 +n12434483 +n12452480 +n01990516 +n12030092 +n11739978 +n12714254 +n13036804 +n07727377 +n07879560 +n03710421 +n12128490 +n11968519 +n03250588 +n10173579 +n03114041 +n02942015 +n12729164 +n07871065 +n02591330 +n09353815 +n10138472 +n02712545 +n12866333 +n07835823 +n03508485 +n01758895 +n02925385 +n03321419 +n09931418 +n02846874 +n12500518 +n07587819 +n03160186 +n04974340 +n13067532 +n11940349 +n13027879 +n02878534 +n10055566 +n07925708 +n12628356 +n11958499 +n03472672 +n04233295 +n04563020 +n03426871 +n04330109 +n03677682 +n04129766 +n02884859 +n12692521 +n10188856 +n03500971 +n10355306 +n12407545 +n11955040 +n10028541 +n10345659 +n14720833 +n09641578 +n12613706 +n11718296 +n03380301 +n01334217 +n03890358 +n03583419 +n12447121 +n09660010 +n11826569 +n11837351 +n12096089 +n03871860 +n01821554 +n12834938 +n02738449 +n02644665 +n03316873 +n12548564 +n03605417 +n12094401 +n13152339 +n03004531 +n03080904 +n03535647 +n12349315 +n04213264 +n07860208 +n01526766 +n03710937 +n11806521 +n10618234 +n12306938 +n10473562 +n10050880 +n04596116 +n02577164 +n04479694 +n07936093 +n07834286 +n12175181 +n03986857 +n02919648 +n12055073 +n04567593 +n07585015 +n12771085 +n10551576 +n09778783 +n01593282 +n02406952 +n12331263 +n10629329 +n12287195 +n07729225 +n07828041 +n01880473 +n12257725 +n02696246 +n07853232 +n11936864 +n09745229 +n03364156 +n04503155 +n03194297 +n04003359 +n07607361 +n10106387 +n10306890 +n10455619 +n01647180 +n07740115 +n12106323 +n03626272 +n11685621 +n11866706 +n04321121 +n01606978 +n12621619 +n11615259 +n07840304 +n02841847 +n05459769 +n03432360 +n04604276 +n12356395 +n12468545 +n03645168 +n00477827 +n03459591 +n04202142 +n12959074 +n07881625 +n12382233 +n02405692 +n12299640 +n12247202 +n12628705 +n12534625 +n09264803 +n12176953 +n09835017 +n10390807 +n04975739 +n12474418 +n11931135 +n07917791 +n10636488 +n09690496 +n11993675 +n03703203 +n11794139 +n13015688 +n04168084 +n01948446 +n10169419 +n04455048 +n04973669 +n12840502 +n12120578 +n10448455 +n01386007 +n02288122 +n01441910 +n02278463 +n03108759 +n02753710 +n03143400 +n13080866 +n13917785 +n13124358 +n13220663 +n02475358 +n01925916 +n02684649 +n10451590 +n03869976 +n03881305 +n07928264 +n01422185 +n04035634 +n11996677 +n04261369 +n12925583 +n12764008 +n09972587 +n03708962 +n01791388 +n02892626 +n04098399 +n07823369 +n07752874 +n13225244 +n03376771 +n01771766 +n13146403 +n12157179 +n13897198 +n07770869 +n13240362 +n07610502 +n03688504 +n02896856 +n12543186 +n09967063 +n05453412 +n12590600 +n02378870 +n07568241 +n01687290 +n00474769 +n11694866 +n02338722 +n02637977 +n04567746 +n10586444 +n11907405 +n03421960 +n07605693 +n10384214 +n12877637 +n12018363 +n10056611 +n13882487 +n12140759 +n04114301 +n11762018 +n12678794 +n11817501 +n02116450 +n12018530 +n03324629 +n12726528 +n03155502 +n10493199 +n04181083 +n10609198 +n04328703 +n03045074 +n07769886 +n01892385 +n12828520 +n03165211 +n11800565 +n07567139 +n13877547 +n12829582 +n02949084 +n07589724 +n01746191 +n12395463 +n05459457 +n10565502 +n11981475 +n09310616 +n12327022 +n02313709 +n12957803 +n11865276 +n12955414 +n12939479 +n13225365 +n07936459 +n03139089 +n07577772 +n12057895 +n03620353 +n12152031 +n01885158 +n04096733 +n12626674 +n10464711 +n10675609 +n07752782 +n03709960 +n02540983 +n02285179 +n01903234 +n07835701 +n04421083 +n02352290 +n09421031 +n03349367 +n02539894 +n04052235 +n07922955 +n03941887 +n04234260 +n04423552 +n11975254 +n08501887 +n12489676 +n04574348 +n10602119 +n02163008 +n02748491 +n10024937 +n10033888 +n12605683 +n01790398 +n10128519 +n14977188 +n10293590 +n12077244 +n09741074 +n11694469 +n12692714 +n12159804 +n12533437 +n03831203 +n03692004 +n09462600 +n04537436 +n06618653 +n07913537 +n12783316 +n10038119 +n10236521 +n01486540 +n07875267 +n04345787 +n07681355 +n13028937 +n03607186 +n07863107 +n12387103 +n09830926 +n03574416 +n04478383 +n11685091 +n03197446 +n03225458 +n09741722 +n07736527 +n02857907 +n10177150 +n12711398 +n10308275 +n02418770 +n02577662 +n09935107 +n03362639 +n12446908 +n04329681 +n04114428 +n09624899 +n12913144 +n12338034 +n02341616 +n12360817 +n12907857 +n02414904 +n05482922 +n11974888 +n04127117 +n12581110 +n04368365 +n01699254 +n12525753 +n04254450 +n11951052 +n12458874 +n12721477 +n07562651 +n02239192 +n10533874 +n12006306 +n09537660 +n10008123 +n02788386 +n03248835 +n04491312 +n11795580 +n04025633 +n10166189 +n07703889 +n11824747 +n07605198 +n12134836 +n03591116 +n02946753 +n13212025 +n11742310 +n02328820 +n02985606 +n09955944 +n12679432 +n10020366 +n12013035 +n02942147 +n04172512 +n11802410 +n10789709 +n03385295 +n02039497 +n01416213 +n11940750 +n12178780 +n01967963 +n12662379 +n12217851 +n02812631 +n12432069 +n09991740 +n03089477 +n12458713 +n03876111 +n10311661 +n12286068 +n02838958 +n11936369 +n03716228 +n13228017 +n06276902 +n12677331 +n04330189 +n10488016 +n12011370 +n04343740 +n07893792 +n02171164 +n03963483 +n12080588 +n07577657 +n12936155 +n03809686 +n04223066 +n04086066 +n12776558 +n07813579 +n01841943 +n12285705 +n02581482 +n11653570 +n10010632 +n04305947 +n12228886 +n12797368 +n01404495 +n09697986 +n11882237 +n10077879 +n07607832 +n09779461 +n13212379 +n10769188 +n10715789 +n01480106 +n02145910 +n04275093 +n01983829 +n01978010 +n09937903 +n11976314 +n11785276 +n12386945 +n04445782 +n10712374 +n10706812 +n10194775 +n12655062 +n10739135 +n02597972 +n02307176 +n04121342 +n02350670 +n12698027 +n02805845 +n02895008 +n13149970 +n03451365 +n04542595 +n07803895 +n07864198 +n09690864 +n03844550 +n12378249 +n10345422 +n13163553 +n10457903 +n10783539 +n10539015 +n11757017 +n10274173 +n08652376 +n10283546 +n04541777 +n02824152 +n12945177 +n02082056 +n03695957 +n07936015 +n07591162 +n03628071 +n02990758 +n07685118 +n04023422 +n04951875 +n03541393 +n10289176 +n04039209 +n07913180 +n07910799 +n12017853 +n03732543 +n10656120 +n10512859 +n04556664 +n12464649 +n12927758 +n12078451 +n07878145 +n10561320 +n12467592 +n07689217 +n07619881 +n11935187 +n09837720 +n03642144 +n12220019 +n02983507 +n03271260 +n02778588 +n10193650 +n01654083 +n02746978 +n10202763 +n02953552 +n07924366 +n08583554 +n02905886 +n07855603 +n09745834 +n12366053 +n04140539 +n03383211 +n11648268 +n03352961 +n12116734 +n07771539 +n07836077 +n03842754 +n11683838 +n03004409 +n11730750 +n13098962 +n12292463 +n02867592 +n01653026 +n07583865 +n12548804 +n12702124 +n03917048 +n12677841 +n12511488 +n04217387 +n12495670 +n03554375 +n12403513 +n08558770 +n02781764 +n12339526 +n12742290 +n01404365 +n03591798 +n12446737 +n10494195 +n12110352 +n01672611 +n10493922 +n03638623 +n09910840 +n02238594 +n02575325 +n13186546 +n11873182 +n10344774 +n04094060 +n10417682 +n02749169 +n02428089 +n04549721 +n03824284 +n12107002 +n12784371 +n09986904 +n01634227 +n07826544 +n12253487 +n01679005 +n12516165 +n09339810 +n03126090 +n07803408 +n11883945 +n03842276 +n03397412 +n03280216 +n12264786 +n02545841 +n11877860 +n01830479 +n13207923 +n12490490 +n02542958 +n04114719 +n12590715 +n13226320 +n11644872 +n04119630 +n10176913 +n04213105 +n11652966 +n12546420 +n12625823 +n11897466 +n02092173 +n10567613 +n04953678 +n10059067 +n12408466 +n03056288 +n13036116 +n04169597 +n12467197 +n02569905 +n02758490 +n12623211 +n04077889 +n04959061 +n04183957 +n11689815 +n03777126 +n03306869 +n07720084 +n02659478 +n12947756 +n04341288 +n04448185 +n04037076 +n09828988 +n03346289 +n04174705 +n13126050 +n04255346 +n09764732 +n11773628 +n14891255 +n04314107 +n02184720 +n02646892 +n04320598 +n01979526 +n03191451 +n03662452 +n10290422 +n01739094 +n02305636 +n04202282 +n05459101 +n02766168 +n09994808 +n03528100 +n10475940 +n03005619 +n12639168 +n02144936 +n13202125 +n10703221 +n03770834 +n12324056 +n03474167 +n02609302 +n12166929 +n12852570 +n12920719 +n12508762 +n11983375 +n01422450 +n12616630 +n09681107 +n10486561 +n13038577 +n12266644 +n02478875 +n02547014 +n02249809 +n03336742 +n12038760 +n01672432 +n09861287 +n03678879 +n01949973 +n09928845 +n02310149 +n12648693 +n10533983 +n12812801 +n04550676 +n01800633 +n12128306 +n12744142 +n13140367 +n07803213 +n07688265 +n13068434 +n02030568 +n12955840 +n01625121 +n13215258 +n04270576 +n02680638 +n02817251 +n01539272 +n04066023 +n12969927 +n10280598 +n04001661 +n09774167 +n10358575 +n01836673 +n02290664 +n09940725 +n12447581 +n07803779 +n04561965 +n10151261 +n01538362 +n10170060 +n13160365 +n09823287 +n12554729 +n10620212 +n11935027 +n03465605 +n03227856 +n08519299 +n07785487 +n03522863 +n02861286 +n12200905 +n04269502 +n02104184 +n07612273 +n01390763 +n11872658 +n12981086 +n10244359 +n01738731 +n12117235 +n12846690 +n02861658 +n08782627 +n09832633 +n02531114 +n01394492 +n03269073 +n03077442 +n09794668 +n13884384 +n08659331 +n02556373 +n02587877 +n03523506 +n03723153 +n12024805 +n13061172 +n03978575 +n07914686 +n13134844 +n12183026 +n03573574 +n03765128 +n03319167 +n01920438 +n07852452 +n07680655 +n03017698 +n12959538 +n04261506 +n01793340 +n03292362 +n12817855 +n03593222 +n01962506 +n12453018 +n04027367 +n12518481 +n09223487 +n07871335 +n03779246 +n09668562 +n01889849 +n02492356 +n07830841 +n03277149 +n09968652 +n03092476 +n10400205 +n06263202 +n07595368 +n12767208 +n02196896 +n12580012 +n10265801 +n02103181 +n02922461 +n01731277 +n12422559 +n04278605 +n02250280 +n03283413 +n11829922 +n10191613 +n02493224 +n04427559 +n12181352 +n12742878 +n10683675 +n04503705 +n03785142 +n12816942 +n10723230 +n11936707 +n12360534 +n12909759 +n03766218 +n02696843 +n11935877 +n07828156 +n10617397 +n12921499 +n13158714 +n10166394 +n12370549 +n03505015 +n12769065 +n02636550 +n10781236 +n09869317 +n10275249 +n04234763 +n10735173 +n13137225 +n02070776 +n04232312 +n07575226 +n03471030 +n07909954 +n02633677 +n01662060 +n07563642 +n04263950 +n11824344 +n13178707 +n02972714 +n10417288 +n12092930 +n11993203 +n10170681 +n03726116 +n03215337 +n12564613 +n14975598 +n07758125 +n03123666 +n07717714 +n01421333 +n02359667 +n09403086 +n03857026 +n12759668 +n02628259 +n02307515 +n12146488 +n09777870 +n07819303 +n12105353 +n10784113 +n11802995 +n12561594 +n02845130 +n12100187 +n03507658 +n02141611 +n01800195 +n03470005 +n12444898 +n02203592 +n09707061 +n00475142 +n12216628 +n01732093 +n02581642 +n03803780 +n12114590 +n04541662 +n12267133 +n11652753 +n07859951 +n04524594 +n12843144 +n04040540 +n10604880 +n12559044 +n03063834 +n12394328 +n12704513 +n10230216 +n10756641 +n02101670 +n12309630 +n03070587 +n11626010 +n04239639 +n01638329 +n01928517 +n13144084 +n10420649 +n03102516 +n12395289 +n09833111 +n01651285 +n11688069 +n12881913 +n12783730 +n07716649 +n03618678 +n10344203 +n03626502 +n10718665 +n03577474 +n01683201 +n03246653 +n12153224 +n02519472 +n02470709 +n15090238 +n03129636 +n07774295 +n04577567 +n09995829 +n09662038 +n10297367 +n03555862 +n12531727 +n09947127 +n12533190 +n04062807 +n00479734 +n12860978 +n01884104 +n09866559 +n12069009 +n04595501 +n12088495 +n02909053 +n12283790 +n02180427 +n10697282 +n07562881 +n13092078 +n11706325 +n01746952 +n01978136 +n07731436 +n02386746 +n12648424 +n12726357 +n10314182 +n07839172 +n11753562 +n12903503 +n12589687 +n02375438 +n03604763 +n11549895 +n13202602 +n12304420 +n10738215 +n12220829 +n10095420 +n12177455 +n11887476 +n04006411 +n09838370 +n02853218 +n12688372 +n03335461 +n02800940 +n03036701 +n09885059 +n10206629 +n11922926 +n01678657 +n12192132 +n12248141 +n03108624 +n01936671 +n02417242 +n03222857 +n03768823 +n04343511 +n03538817 +n12655726 +n12521186 +n01330497 +n12767423 +n12965951 +n09695132 +n04410886 +n12599874 +n07865700 +n07596160 +n10227698 +n03224490 +n11598886 +n02948293 +n09906293 +n12247963 +n03301175 +n03895170 +n04259468 +n07808806 +n13147689 +n09856827 +n13882639 +n02241008 +n03842585 +n02883101 +n12182276 +n13918717 +n12728164 +n10634464 +n02477187 +n03107716 +n02342250 +n01479213 +n12793695 +n09808080 +n10707707 +n04161010 +n02836607 +n10076483 +n07726386 +n03872273 +n10250712 +n07688412 +n13884930 +n12301766 +n10196404 +n07591330 +n03814727 +n09610255 +n12757115 +n09814381 +n02397987 +n07886317 +n03959123 +n02185167 +n03533845 +n11838413 +n10227393 +n07704305 +n03580615 +n02663485 +n10101981 +n04346855 +n10067011 +n04464125 +n02829510 +n10007995 +n07845775 +n03004713 +n02450561 +n09905530 +n10361060 +n12394638 +n12095934 +n10479135 +n03145277 +n12246773 +n13194212 +n04475900 +n03252787 +n14867545 +n10485298 +n09961739 +n02149653 +n01553762 +n03931980 +n02344408 +n11676850 +n04034367 +n04235646 +n12867184 +n12625670 +n12763529 +n07593107 +n04351550 +n02571810 +n13899735 +n03652826 +n09495962 +n03421768 +n04205062 +n11918808 +n07745197 +n07752264 +n01892744 +n04609811 +n10278456 +n11790936 +n09754152 +n13234519 +n09820044 +n00440643 +n02350357 +n03779884 +n07803992 +n03305953 +n01836087 +n10068234 +n10690421 +n03134394 +n12380761 +n12801966 +n03134232 +n02596720 +n07591236 +n11882821 +n02312175 +n02387983 +n01912152 +n10805501 +n12718074 +n03188290 +n02776505 +n10528148 +n09971385 +n10524223 +n09958292 +n02721813 +n10300829 +n12007766 +n12107191 +n04449700 +n02987950 +n11878633 +n12328801 +n04551833 +n10567722 +n11654984 +n02808968 +n12066451 +n02964075 +n11633284 +n02434712 +n03070854 +n07926540 +n01543936 +n10091861 +n09938080 +n11976511 +n03342432 +n12886831 +n12509993 +n12958261 +n12730776 +n10066206 +n07846014 +n13176714 +n03332591 +n04607640 +n02513727 +n12138248 +n11964848 +n01318053 +n10553140 +n07839055 +n02632039 +n11865429 +n02286654 +n02367812 +n12093885 +n10774329 +n02296912 +n01729672 +n10353928 +n12033504 +n11936113 +n03263338 +n07822053 +n09737050 +n13875884 +n13212559 +n11690088 +n05468739 +n09344724 +n02507148 +n01377694 +n04172607 +n10464870 +n07804152 +n02825872 +n03139640 +n11858703 +n10227490 +n12334153 +n03616225 +n12018188 +n12399656 +n10235269 +n11840764 +n01995514 +n03326475 +n12704041 +n10684827 +n03006788 +n13906484 +n02868240 +n03614887 +n03491724 +n12124172 +n03675907 +n13170840 +n03983712 +n03254737 +n07836269 +n01784293 +n02095212 +n12470512 +n12219668 +n12920521 +n04492157 +n02950018 +n01922717 +n11797981 +n12601805 +n02744961 +n07814925 +n09798096 +n03939062 +n13891547 +n07564292 +n01590220 +n09295210 +n03997875 +n03479266 +n01491661 +n03781055 +n12528768 +n10657306 +n12014923 +n10094320 +n02532272 +n02224023 +n04541136 +n12067672 +n02661473 +n04233027 +n12399899 +n12889412 +n01736032 +n12551173 +n01337734 +n10104487 +n02921592 +n02148512 +n10216403 +n03276839 +n01781570 +n03999621 +n02505238 +n12537569 +n10433452 +n02351343 +n12365158 +n08539276 +n01897257 +n12221801 +n10557246 +n10437698 +n01803641 +n11836327 +n07813833 +n03468570 +n06277025 +n10040240 +n03692842 +n03017835 +n01881564 +n10487363 +n07937069 +n10597505 +n01638722 +n10160412 +n09825096 +n12611640 +n03098515 +n10654211 +n13196234 +n03436990 +n04058486 +n09814567 +n10758337 +n03515934 +n07688757 +n10269199 +n12627347 +n04521571 +n01636510 +n03220095 +n09982525 +n12768809 +n02340930 +n02473857 +n12336586 +n12125584 +n02833040 +n02498153 +n01467804 +n12120347 +n11650430 +n11953339 +n12592058 +n05102764 +n10575594 +n09722064 +n01966586 +n10619888 +n07852376 +n12650915 +n10321882 +n11974557 +n09847267 +n13201423 +n12337131 +n13185658 +n02150134 +n10538853 +n10471732 +n07836600 +n03526062 +n02512752 +n04232437 +n03367321 +n04308915 +n07600895 +n11539289 +n03539293 +n12699922 +n07817599 +n02781213 +n03594010 +n12035907 +n04075813 +n05233741 +n07863229 +n10735984 +n12095543 +n12272735 +n04229620 +n12240965 +n07768590 +n04420024 +n12111627 +n02861509 +n02595056 +n12183452 +n04607982 +n13213577 +n07741888 +n03750614 +n10043024 +n03372933 +n10051861 +n10199251 +n03249956 +n03984125 +n02956393 +n11619687 +n03356279 +n07833951 +n10715030 +n02340358 +n10768272 +n01494041 +n02592734 +n03323319 +n02136285 +n03995661 +n09945223 +n03547397 +n10044682 +n12878784 +n02803809 +n13160254 +n12726902 +n12196954 +n03161016 +n03105645 +n04218921 +n09493983 +n10719036 +n12263588 +n12565102 +n10684146 +n03148518 +n04287986 +n02340640 +n04331443 +n10727016 +n03369407 +n07824863 +n07844786 +n12467433 +n07582811 +n02964196 +n02197877 +n10758445 +n03271376 +n13212175 +n03260504 +n12777778 +n11973634 +n05467054 +n11946313 +n02462213 +n13906669 +n10520286 +n02074726 +n01771100 +n13880199 +n09811568 +n13883763 +n02334728 +n11831100 +n12025220 +n12751172 +n03858837 +n10127186 +n12831535 +n07823591 +n02513805 +n03662301 +n09913329 +n02749670 +n10655986 +n01787191 +n03199488 +n12732252 +n12253664 +n07735294 +n03440876 +n09650839 +n03844965 +n10341446 +n12688187 +n12961242 +n03423224 +n13157346 +n09802951 +n11948044 +n03489048 +n12279060 +n03664840 +n03731882 +n07742605 +n07870734 +n03949761 +n10759331 +n07739923 +n02737351 +n01788291 +n11780424 +n03722646 +n12297110 +n12363768 +n04495310 +n10008254 +n03934890 +n01318478 +n03609959 +n10070377 +n04123228 +n13068735 +n02909706 +n10671042 +n10491998 +n07650792 +n12664710 +n10213034 +n03455642 +n10411867 +n09903936 +n10121800 +n02622955 +n03647423 +n07596566 +n09654898 +n12248780 +n02684515 +n04255670 +n06273890 +n03495941 +n12960552 +n09724234 +n03861048 +n03293095 +n11835251 +n12852428 +n04084517 +n01814620 +n13159890 +n03147156 +n02311748 +n10237799 +n07584859 +n01946827 +n09651968 +n12241192 +n03669245 +n07858336 +n11932927 +n04444218 +n10526534 +n03642573 +n09470222 +n10731732 +n12001924 +n03786096 +n01359762 +n03824999 +n13877667 +n10591811 +n10574311 +n03275125 +n11631985 +n10539160 +n10502950 +n12499757 +n12432707 +n12068615 +n07689624 +n02610373 +n03204436 +n13051346 +n13134531 +n07610890 +n04021164 +n03502897 +n02299378 +n10417843 +n10050043 +n07929940 +n02593453 +n10577820 +n12870225 +n03333851 +n09463226 +n11741575 +n09193551 +n12012510 +n11987349 +n09215023 +n07924655 +n10060075 +n11999278 +n03933391 +n02602059 +n11993444 +n02337902 +n10149867 +n04441093 +n02868429 +n10629647 +n04192361 +n12029039 +n02768433 +n12078747 +n12730143 +n03255167 +n12492900 +n01709876 +n09672725 +n07870620 +n02315821 +n12277334 +n12204730 +n07852712 +n01319685 +n07802246 +n13031193 +n00812526 +n09658815 +n11982939 +n04264485 +n07893425 +n04094438 +n03285730 +n13182338 +n10724570 +n07832741 +n13210350 +n10654015 +n04058721 +n07875086 +n03462747 +n03994417 +n02889856 +n11957514 +n10109443 +n10478462 +n03064562 +n02477782 +n11920998 +n02138169 +n04227787 +n11797508 +n10753339 +n12928307 +n11921792 +n12643688 +n01833112 +n03919808 +n09817386 +n01903498 +n03848033 +n12031547 +n01035504 +n12324906 +n01911063 +n02588794 +n03749634 +n03539754 +n02242455 +n03079616 +n03246312 +n09705671 +n07860629 +n10458356 +n10051761 +n09709531 +n02867401 +n12522678 +n13150378 +n04462576 +n03462315 +n03712981 +n07607027 +n10581648 +n02957427 +n04271793 +n02253913 +n12824735 +n11697802 +n02161588 +n12463975 +n02361090 +n09784564 +n09680908 +n03512452 +n13214217 +n10712690 +n04023119 +n07814007 +n09833751 +n12885265 +n02259987 +n11933903 +n03628831 +n11967142 +n02533545 +n03900301 +n07919787 +n12793886 +n10768148 +n03071552 +n02780315 +n12193665 +n03378442 +n04486616 +n07832307 +n03164192 +n12786273 +n04261868 +n12655351 +n12320414 +n04371979 +n10630093 +n13052014 +n01357328 +n07879821 +n09753348 +n03796974 +n11701302 +n11678299 +n04022434 +n11610823 +n07726009 +n04117639 +n10474343 +n11888061 +n01842788 +n10435251 +n03343047 +n03383378 +n12750767 +n09662661 +n05241485 +n10000459 +n12220496 +n02246941 +n12676370 +n02253264 +n07766409 +n02940289 +n12089320 +n10363573 +n12922119 +n09783537 +n11695285 +n12331066 +n12573647 +n10218164 +n12509821 +n07862946 +n12818601 +n02589316 +n13191620 +n03758992 +n12112337 +n10733820 +n02898093 +n02645953 +n10150794 +n04595762 +n02344918 +n13132756 +n12859153 +n12138444 +n04211001 +n12935166 +n07830493 +n10142166 +n11951820 +n03018848 +n01453742 +n11985321 +n10000294 +n01362336 +n02328009 +n12639376 +n03090437 +n02204249 +n04312916 +n13127666 +n09684082 +n03432509 +n10274318 +n09704057 +n07593972 +n10074249 +n13157971 +n01638194 +n04036963 +n11708857 +n03418749 +n12589458 +n11899762 +n07683138 +n01601410 +n07854707 +n04279063 +n03239607 +n10302700 +n12520406 +n12576451 +n03881534 +n07565608 +n02349390 +n12569851 +n12249294 +n04059399 +n03530189 +n09357346 +n04325208 +n13159691 +n04045941 +n13898315 +n11992479 +n02353411 +n07825496 +n12922458 +n03115014 +n11761836 +n03323211 +n02793296 +n03492087 +n05241662 +n05491154 +n10419630 +n04506895 +n10546428 +n02907296 +n10769459 +n11647868 +n13188462 +n03825442 +n13209460 +n10742005 +n07599242 +n12361754 +n04570532 +n04131811 +n07756499 +n02598134 +n01910252 +n02910701 +n10129338 +n13871717 +n12673588 +n12565912 +n07562172 +n02711237 +n10775003 +n07695410 +n02637179 +n12930951 +n10261211 +n02906963 +n01366700 +n10642705 +n09846586 +n02779719 +n04978561 +n01369358 +n12114010 +n03521771 +n10667709 +n02296612 +n10722029 +n03500557 +n01365474 +n10472447 +n07585644 +n07609316 +n04013060 +n04505888 +n09726811 +n12692160 +n12378963 +n03585551 +n13139837 +n10167565 +n03799375 +n11990920 +n09640327 +n04502989 +n10108832 +n10561736 +n01897426 +n11766189 +n12462582 +n12913524 +n02684356 +n13200542 +n10466198 +n04331892 +n01478969 +n07837234 +n07692248 +n04552097 +n12382875 +n01484447 +n04120695 +n12681376 +n10293861 +n11965962 +n11788039 +n03959227 +n01832813 +n09918867 +n09942697 +n07587206 +n10459882 +n01347583 +n02267208 +n03951453 +n03006903 +n12126736 +n10286749 +n03395401 +n04605057 +n03467887 +n12755559 +n04020744 +n11629354 +n01647033 +n02780445 +n10205714 +n09439032 +n03138128 +n02763083 +n07835547 +n12251278 +n11949857 +n01635480 +n10675142 +n07845335 +n07751977 +n10332110 +n11871496 +n11764814 +n12229651 +n07760297 +n09865672 +n02919308 +n12218490 +n03782929 +n12231709 +n11909864 +n03144982 +n11799331 +n10433610 +n10483395 +n03206023 +n05442594 +n03626418 +n07870478 +n10171456 +n11964446 +n12796849 +n02126317 +n03797062 +n01412694 +n07610746 +n03581897 +n04479526 +n12447891 +n11906514 +n09699642 +n12873984 +n10586903 +n13234114 +n02436353 +n11889205 +n01460303 +n04400899 +n11884967 +n02140491 +n12215824 +n03586911 +n01394040 +n10691937 +n12371704 +n09668988 +n04362624 +n01740885 +n01337191 +n09714120 +n02185481 +n08555333 +n10704238 +n12430471 +n12034594 +n10012484 +n12088909 +n03205903 +n04129490 +n13090018 +n10712474 +n12234669 +n13016076 +n00454855 +n13882713 +n02644817 +n03192907 +n03519226 +n01561181 +n04583967 +n11732052 +n10732854 +n04480303 +n07934908 +n03825673 +n10621294 +n04354387 +n03374102 +n02922159 +n13158815 +n04000716 +n09685806 +n04427216 +n12051514 +n09712967 +n12081649 +n09748889 +n03252231 +n10704886 +n12897118 +n12525168 +n11728769 +n02731251 +n02548884 +n12403276 +n09627807 +n08679167 +n09663999 +n04247440 +n07711683 +n09909929 +n03415868 +n05244421 +n07680416 +n12757668 +n11935794 +n03483086 +n01860864 +n10755164 +n03675076 +n12004987 +n07566092 +n04078955 +n03379719 +n01916588 +n10138369 +n09755893 +n03649003 +n03977430 +n02309120 +n10616578 +n12242850 +n12388293 +n03292085 +n09919061 +n10302576 +n01497413 +n01936858 +n01377278 +n04358256 +n02667693 +n12125183 +n07758582 +n07813324 +n09737453 +n12745564 +n03855464 +n03166685 +n01446152 +n09801102 +n10561222 +n10576818 +n13915209 +n10474446 +n03845990 +n04237174 +n12531328 +n07855812 +n10763245 +n04614505 +n07905770 +n12051792 +n12653633 +n03593862 +n10359659 +n10436334 +n07853125 +n12911264 +n12265083 +n03638014 +n04444121 +n02706221 +n10563711 +n07808166 +n11799732 +n04093915 +n10451858 +n04410760 +n10075299 +n12740967 +n12635359 +n09611722 +n12902466 +n13915305 +n05542893 +n04440597 +n03675445 +n12315245 +n10646032 +n10047199 +n12775717 +n10365514 +n10590452 +n11616260 +n02812342 +n07856756 +n04570416 +n03565991 +n12215210 +n04330896 +n02388588 +n02266269 +n10760199 +n14714645 +n02742070 +n03565710 +n12609379 +n03420935 +n03441465 +n00453631 +n01963479 +n04362972 +n09863936 +n03961394 +n03009269 +n12297280 +n04561010 +n12192877 +n02981565 +n12134695 +n07855413 +n03232815 +n10180791 +n09932788 +n10571907 +n02109256 +n02660091 +n07865788 +n13228536 +n10306279 +n02635580 +n03634899 +n10262343 +n12296929 +n04393301 +n06281175 +n04485586 +n13103660 +n10510974 +n04166436 +n01634522 +n07596362 +n12700357 +n08597579 +n11744011 +n12238756 +n01790171 +n04571800 +n11867311 +n03464467 +n12241880 +n09961605 +n12592544 +n03170459 +n09938991 +n02692680 +n10295371 +n04331765 +n02612167 +n02520810 +n11977887 +n04094608 +n07722390 +n07832202 +n12448361 +n04612159 +n12186352 +n13161151 +n12654227 +n09868899 +n10104756 +n09920106 +n12981301 +n02610980 +n12545865 +n10673296 +n04110841 +n01704626 +n04055700 +n12117912 +n10519126 +n12443736 +n01697978 +n02148088 +n03012644 +n12091697 +n10395390 +n10509810 +n10462751 +n02896949 +n03836602 +n03928994 +n07718195 +n02473983 +n08571642 +n02648916 +n11970298 +n06274292 +n04613158 +n09856401 +n12811713 +n13111340 +n12122442 +n10095265 +n04445610 +n11631619 +n07863644 +n12022821 +n10315217 +n12549799 +n03386343 +n03121040 +n03558007 +n12272432 +n11798496 +n02522866 +n02952935 +n10741493 +n12143065 +n07883156 +n09616573 +n02289988 +n13161904 +n02588945 +n00451768 +n12375769 +n10777299 +n04495183 +n11930994 +n09970088 +n02254246 +n12276314 +n07857598 +n04428382 +n03789794 +n03383821 +n12980080 +n01447139 +n12880799 +n03501520 +n10764465 +n13143285 +n12727729 +n12444095 +n02354621 +n13174354 +n01691652 +n07732525 +n10437014 +n04368235 +n10371052 +n02611898 +n03597147 +n09912431 +n03135788 +n07888058 +n02409202 +n14582716 +n11934463 +n04395332 +n12558680 +n05257967 +n11798978 +n10617024 +n04102760 +n12132092 +n12988572 +n10390698 +n11887310 +n12063211 +n12952717 +n13141972 +n12176453 +n10245863 +n10509161 +n10389976 +n10333165 +n01474864 +n09274305 +n11888424 +n10368711 +n13222877 +n10469611 +n07582970 +n09700125 +n12805762 +n07865575 +n07853852 +n03628421 +n04482975 +n03099622 +n01349735 +n11943133 +n12736603 +n12197601 +n10597745 +n04418644 +n12689305 +n07755262 +n10598459 +n04312020 +n03195485 +n09776642 +n10596517 +n10223606 +n01923890 +n12703716 +n03465040 +n12372233 +n12528109 +n03571853 +n10802621 +n10204177 +n02320465 +n03976105 +n02214096 +n02148991 +n10377542 +n10697135 +n03538542 +n07582027 +n04517999 +n12180456 +n02838014 +n03977266 +n03818001 +n12191240 +n11648776 +n10773800 +n04475496 +n03945817 +n04682018 +n02994743 +n02787269 +n11650160 +n03834472 +n03389983 +n09797742 +n06209940 +n12525513 +n12672289 +n01893164 +n10710259 +n01892145 +n11773408 +n10554024 +n09864968 +n10699752 +n11631405 +n10414768 +n04430605 +n10742546 +n10738871 +n12857204 +n09309046 +n01724840 +n04123317 +n07881525 +n03868044 +n02140268 +n10708292 +n09838295 +n09797998 +n10710171 +n11814996 +n11938556 +n03543511 +n02151230 +n01515217 +n03533392 +n02039780 +n12810151 +n02335231 +n12152251 +n13225617 +n09801275 +n01978587 +n14821852 +n11742878 +n12679023 +n03521431 +n09679028 +n02021281 +n10784544 +n04421258 +n12492460 +n03720005 +n02541257 +n03889397 +n02888898 +n10659762 +n12045157 +n12712320 +n10369095 +n09721444 +n12769318 +n01703161 +n12697514 +n07836456 +n03905361 +n10660883 +n07769306 +n11893916 +n07846274 +n04110281 +n03655470 +n07740744 +n01363719 +n12540647 +n09896311 +n12842642 +n07755619 +n07754155 +n11548870 +n02868546 +n04215588 +n04288165 +n13201566 +n07721118 +n12018271 +n11903333 +n02909165 +n02662559 +n11658709 +n13063514 +n07725663 +n10179069 +n10776887 +n12637485 +n03814528 +n12542043 +n07833333 +n07820036 +n02746683 +n07925808 +n10349750 +n03154316 +n04155625 +n03232923 +n02116185 +n09998788 +n02821543 +n03410303 +n10656223 +n07916582 +n12880638 +n10408809 +n04612840 +n11805255 +n12044784 +n10497534 +n03458422 +n12873341 +n07808675 +n09476123 +n07611733 +n10598013 +n02214660 +n05469664 +n03952150 +n11855435 +n04375926 +n08523340 +n01642391 +n04007415 +n09756961 +n12891824 +n02894847 +n11698245 +n12906771 +n02894024 +n04131015 +n11882636 +n04386456 +n03291551 +n07837110 +n12462221 +n08540532 +n10299875 +n12705978 +n10448322 +n10487592 +n12175598 +n02272552 +n03833907 +n10383237 +n12758176 +n12729950 +n10061195 +n07816726 +n03241903 +n12239880 +n10380499 +n07855188 +n10207077 +n02770078 +n12961393 +n03778459 +n10734741 +n03485575 +n09958447 +n12337246 +n11830045 +n09866354 +n03209666 +n01470145 +n10395209 +n03872016 +n04267091 +n12888457 +n12104104 +n04088229 +n01964957 +n12002651 +n02503756 +n00481938 +n01908042 +n03378765 +n04193883 +n09862183 +n11861487 +n02520525 +n02081060 +n10386754 +n12693865 +n04514095 +n01325060 +n02460817 +n07568095 +n03651605 +n02561937 +n12844409 +n12888016 +n02974565 +n12439154 +n13018906 +n12071259 +n03897634 +n02863176 +n10603528 +n03493911 +n12887532 +n12944095 +n12794568 +n09980458 +n03503567 +n11783162 +n13123309 +n11729860 +n03702582 +n04280373 +n10086744 +n01790557 +n12627526 +n10552393 +n12092629 +n03888998 +n12751675 +n01442450 +n02479332 +n07726230 +n03642341 +n03142325 +n06263895 +n12088327 +n09703344 +n10528493 +n02820085 +n07737594 +n04090781 +n09901642 +n02328942 +n02724722 +n09866115 +n12658715 +n10481167 +n13135692 +n11850918 +n10205344 +n12361560 +n03698123 +n03284482 +n12106134 +n04441528 +n02591613 +n02581108 +n07856186 +n12197359 +n12900783 +n01725713 +n12012253 +n03907475 +n02170738 +n03694949 +n13238654 +n04611795 +n02782432 +n13191148 +n02741367 +n04170694 +n12770892 +n01973148 +n10080508 +n10161622 +n09808591 +n07912093 +n02059541 +n02779971 +n03857156 +n12945366 +n03055159 +n12758325 +n10067305 +n02597818 +n07808352 +n13147153 +n10679723 +n02271222 +n04012665 +n12942729 +n10349243 +n01377510 +n07800636 +n10654321 +n10219453 +n09961469 +n10732521 +n04479405 +n11632929 +n03856728 +n08658918 +n10327143 +n10754281 +n02085118 +n09691604 +n09952163 +n10082299 +n03872167 +n03733465 +n04138869 +n01425223 +n12066821 +n02177506 +n09892262 +n02896694 +n12983654 +n13224922 +n09658921 +n12744850 +n03639880 +n02943686 +n10660621 +n11936539 +n03698226 +n04519536 +n12392765 +n09319604 +n07567039 +n04160261 +n01802159 +n02838178 +n07746910 +n02266421 +n10240417 +n12542240 +n12550408 +n01445857 +n04132465 +n03569014 +n12666050 +n12362514 +n10676569 +n09702673 +n12885510 +n04447156 +n04396226 +n12240150 +n11639306 +n02249134 +n01340785 +n02833140 +n10027590 +n02142407 +n11996251 +n07874531 +n04340019 +n03166120 +n10420277 +n04465203 +n12738259 +n12831141 +n03998673 +n01385017 +n12842519 +n02587051 +n10753061 +n12505253 +n13906936 +n01989516 +n12640435 +n07852532 +n04243142 +n10261511 +n12853287 +n12239240 +n03973003 +n09983889 +n10345302 +n14804958 +n02354162 +n03049326 +n10443659 +n01318660 +n12787364 +n04253304 +n11941094 +n09283514 +n09393524 +n11865574 +n01531639 +n04409279 +n02859729 +n10712835 +n03694196 +n04343630 +n10331098 +n12929600 +n02826259 +n10171219 +n07735179 +n07594840 +n03709644 +n09950728 +n09859285 +n07718329 +n01418620 +n09858299 +n12395068 +n10011360 +n07763290 +n02643316 +n03596099 +n04422566 +n11958888 +n09650989 +n10318686 +n01333082 +n12886402 +n03781467 +n12667582 +n02923535 +n09988311 +n08663860 +n02508346 +n13885011 +n03939281 +n10772937 +n04485750 +n09871952 +n10291942 +n07759324 +n10174971 +n03666238 +n01937579 +n02308033 +n07847706 +n10371330 +n04124887 +n11853079 +n11941478 +n12647231 +n04601041 +n12718483 +n02902816 +n01941340 +n04066767 +n07617839 +n02254901 +n03488784 +n07834774 +n02524659 +n03367969 +n10783734 +n03422484 +n09776807 +n03970363 +n10131590 +n03433247 +n02622712 +n10206506 +n12061104 +n11936287 +n07874674 +n10061043 +n07828275 +n03764606 +n12236768 +n01826844 +n09741904 +n05454978 +n03591592 +n01441272 +n03736372 +n07585474 +n12762405 +n12943912 +n01894522 +n03218446 +n11846425 +n11689678 +n04147916 +n02375862 +n10409459 +n09287415 +n10113583 +n03261263 +n02817386 +n09869578 +n10550252 +n02532786 +n12031388 +n07937344 +n11612235 +n01571410 +n09402944 +n04234670 +n02603862 +n04196925 +n09999135 +n10468750 +n15093049 +n03003633 +n11650307 +n12312110 +n02525703 +n10501635 +n09751622 +n10114550 +n10103155 +n12829975 +n04004099 +n12419878 +n02082190 +n03328201 +n03093427 +n07845571 +n12655498 +n02558206 +n12563045 +n07573453 +n12324558 +n13016289 +n10601234 +n10310783 +n03531691 +n02135610 +n03168543 +n09985978 +n10615334 +n07839312 +n09985809 +n10142537 +n10417969 +n07869111 +n12514992 +n04327544 +n10326776 +n12583681 +n01476418 +n12840168 +n03852544 +n11713763 +n07824502 +n07858841 +n12256325 +n03036149 +n07883661 +n04500390 +n10170866 +n01835918 +n10760951 +n10720197 +n12330239 +n02135844 +n10210512 +n03217739 +n10802953 +n03136254 +n02161225 +n03961630 +n12927194 +n02251233 +n13891937 +n09945603 +n02695762 +n12181612 +n13234857 +n10175725 +n11346873 +n07934678 +n02318687 +n10251329 +n04112921 +n04001132 +n03042984 +n11704791 +n04246459 +n12193334 +n10718509 +n10371221 +n05278922 +n03265754 +n12186554 +n12481289 +n10521853 +n10748506 +n11729142 +n10143595 +n09422631 +n07562984 +n07850219 +n04193742 +n11997160 +n12002826 +n12820113 +n04132829 +n10272913 +n03358841 +n12610740 +n12384569 +n10725280 +n02746008 +n13148384 +n12635151 +n02337171 +n10350774 +n12308907 +n04542474 +n04339062 +n03549350 +n10240235 +n10556033 +n10214390 +n01791314 +n02801047 +n07817465 +n11610602 +n10315730 +n14592309 +n10249191 +n12453857 +n12579822 +n09833275 +n04051269 +n11552594 +n04088343 +n04565039 +n03930431 +n10679503 +n11899921 +n10295479 +n01357507 +n13036312 +n03404900 +n12523141 +n01816017 +n02020578 +n12661045 +n06262943 +n02775813 +n12921315 +n09751076 +n09834258 +n10585628 +n12885754 +n04411019 +n10342367 +n10368798 +n09672840 +n12729023 +n04578329 +n10325549 +n03680248 +n11920663 +n10416567 +n10011486 +n01643255 +n03193754 +n07823814 +n04055447 +n10660128 +n07765612 +n07612530 +n04205613 +n09677427 +n03989199 +n11100798 +n12721122 +n10000787 +n10382157 +n07724819 +n12928819 +n11631159 +n02608996 +n10516527 +n09703101 +n12290975 +n03470222 +n03810412 +n03729131 +n03356038 +n12692024 +n12614625 +n10789415 +n02333819 +n01722670 +n03885410 +n12038208 +n02294097 +n02608860 +n02500596 +n07909231 +n03254625 +n09681973 +n12221368 +n01893399 +n10025295 +n03194812 +n13181406 +n12249122 +n03447894 +n09795010 +n02187900 +n10139651 +n10631654 +n01792530 +n02569631 +n07853946 +n09907804 +n03263758 +n04214649 +n02450829 +n02431542 +n11998492 +n02651060 +n04101860 +n01806061 +n13901423 +n12903964 +n03968479 +n04268565 +n12601494 +n02083780 +n04570118 +n12247407 +n03337822 +n09878921 +n02369935 +n10022908 +n09667358 +n13160938 +n11937360 +n07741623 +n03705808 +n12241426 +n10478118 +n03805933 +n10343869 +n09391774 +n03482128 +n10357737 +n10334461 +n09675045 +n09662951 +n10174253 +n01815270 +n13873361 +n04432785 +n09778927 +n10671898 +n05571341 +n10033572 +n09864632 +n10618465 +n03437184 +n12786464 +n01723579 +n11798270 +n07742415 +n02143142 +n10548419 +n03695122 +n02518622 +n04605446 +n10218292 +n11832671 +n12646950 +n03382708 +n09844898 +n09674786 +n01472502 +n07616906 +n09763272 +n03982767 +n10005006 +n03059236 +n01816474 +n03725869 +n01979269 +n04226322 +n13236100 +n03920384 +n11852148 +n04373563 +n04324120 +n11686652 +n03036341 +n02142898 +n09783776 +n13147918 +n03465320 +n07855721 +n10336411 +n10438619 +n07750299 +n12237152 +n03559373 +n10077106 +n10169796 +n09828403 +n09959658 +n12464128 +n12934685 +n04221673 +n02617537 +n11689367 +n10180580 +n07813717 +n12529905 +n02340186 +n01400247 +n11749112 +n04404072 +n03135656 +n12098827 +n12481150 +n10023506 +n03500838 +n01564101 +n04009923 +n10023264 +n03908456 +n03206405 +n07590068 +n09958133 +n10755394 +n01423617 +n11511327 +n10536274 +n01965252 +n11549245 +n11935627 +n09635635 +n03752071 +n07585997 +n03147084 +n12666159 +n09748408 +n03796848 +n01501948 +n02345078 +n12430675 +n03103128 +n11710987 +n03393199 +n09233603 +n10465002 +n04298765 +n01351170 +n02720576 +n03966582 +n10643837 +n12420124 +n10793799 +n01652297 +n09281252 +n11983606 +n10222497 +n11832899 +n02391617 +n12434106 +n03987674 +n02140179 +n07896560 +n04325804 +n10647745 +n01924800 +n10156629 +n03545961 +n03906789 +n01890564 +n10699558 +n12332218 +n03247495 +n11839460 +n03527675 +n12586725 +n13208965 +n02714315 +n02750320 +n04615149 +n12679876 +n12863234 +n03304323 +n12139793 +n11922755 +n12321669 +n04979307 +n01921059 +n09657206 +n13042134 +n04045787 +n11700279 +n02337598 +n01415920 +n01400391 +n13207572 +n10785480 +n02515713 +n12018100 +n02634545 +n03292736 +n02881546 +n12655605 +n03105810 +n10545792 +n03894933 +n09796974 +n10320484 +n12308112 +n11549009 +n13047862 +n14941787 +n12379531 +n10540252 +n11696935 +n12184468 +n12851860 +n12908854 +n10586265 +n12369066 +n10426630 +n12523850 +n03916289 +n04538878 +n09908769 +n02828115 +n07560422 +n10266016 +n03569174 +n06423496 +n10495167 +n03617834 +n09327538 +n10195056 +n10508379 +n13031323 +n11659248 +n04242315 +n10742111 +n10700963 +n12032686 +n09877587 +n07825597 +n07568991 +n11736362 +n12169099 +n13103750 +n03263640 +n12248941 +n10665302 +n01920051 +n09704283 +n11533999 +n04503073 +n11645163 +n10639817 +n09920901 +n06340977 +n03251100 +n10378113 +n03226090 +n10131268 +n02877513 +n13191884 +n02787120 +n11709045 +n02740061 +n12323665 +n02831998 +n10342180 +n12716594 +n04498275 +n09905050 +n03745487 +n07642833 +n10294020 +n10211666 +n12205460 +n02981198 +n01642943 +n07679140 +n04390483 +n10432875 +n09214269 +n10792506 +n10243483 +n13099833 +n10221520 +n13177768 +n04091584 +n10672540 +n10200246 +n13889331 +n02345340 +n10237556 +n01833415 +n01335218 +n09804230 +n09957523 +n05235879 +n10070449 +n10308653 +n10721708 +n04312654 +n10394434 +n12201938 +n12434775 +n07601025 +n02672152 +n10157271 +n02635154 +n12572858 +n13182937 +n10160188 +n03396997 +n10344656 +n02968210 +n10190516 +n07684422 +n03706939 +n07618871 +n02290870 +n03817331 +n03275311 +n12698774 +n04375080 +n07837630 +n04314216 +n11833373 +n07618684 +n03742238 +n12532886 +n03712444 +n11750989 +n10038620 +n09617577 +n03807334 +n10108089 +n01816140 +n10715347 +n02648035 +n13127303 +n02809491 +n02430748 +n12235479 +n01451863 +n01514926 +n10010864 +n01913440 +n09660240 +n11806369 +n01470479 +n12655245 +n07655067 +n03436772 +n11778092 +n03951800 +n10277815 +n07931733 +n01479820 +n03576955 +n07609549 +n12568649 +n05263316 +n02636405 +n01384084 +n03298352 +n07617344 +n09987045 +n10573957 +n07801709 +n02589062 +n02534165 +n02748359 +n09607782 +n07590974 +n02199170 +n02696569 +n09678747 +n12795209 +n13176363 +n10663315 +n10588724 +n09772330 +n10174589 +n12366313 +n11883628 +n07617447 +n01334690 +n03168663 +n11764478 +n08599174 +n03942028 +n12153033 +n03448696 +n12096674 +n10037588 +n03548320 +n09760290 +n10374541 +n09653438 +n10294139 +n10276942 +n12279293 +n12764507 +n12803958 +n10764622 +n02140858 +n07599068 +n10245507 +n12351790 +n12818004 +n10118301 +n03945459 +n09912995 +n12176709 +n03873996 +n10339179 +n10614507 +n10114662 +n10784922 +n03821424 +n04959230 +n13015509 +n12573911 +n11948469 +n09775907 +n12758014 +n01780142 +n09956578 +n12165384 +n10088200 +n10382480 +n04131113 +n09930628 +n09784160 +n11750173 +n13064111 +n03817522 +n12662074 +n03176238 +n12310021 +n11679378 +n09961331 +n02385580 +n11904274 +n03113505 +n10244913 +n02836900 +n09986700 +n11963572 +n13158605 +n10321632 +n02179891 +n02189670 +n10097995 +n10774756 +n10783240 +n10605737 +n02530052 +n10386196 +n10184505 +n09788237 +n03589672 +n12509109 +n10658304 +n12966804 +n12559518 +n03189311 +n01451295 +n12179632 +n12301613 +n10496489 +n03402785 +n10244108 +n02385676 +n03552001 +n03092053 +n02313360 +n02547733 +n02109391 +n01327909 +n04574606 +n03060728 +n07840124 +n10567848 +n10062176 +n02703124 +n10804732 +n12699301 +n04515890 +n07919665 +n10457214 +n09663248 +n03165955 +n12988341 +n03987865 +n03031756 +n10277912 +n10172080 +n09325824 +n03198223 +n09605110 +n10113869 +n11603462 +n03352366 +n11930203 +n09769929 +n12979316 +n02579762 +n09953052 +n03105974 +n00476140 +n11598287 +n02830157 +n10512201 +n09746936 +n10668666 +n02919976 +n09993651 +n02149861 +n09705003 +n10389865 +n11655152 +n10010767 +n10070563 +n03688832 +n10590239 +n11936027 +n02939763 +n03163488 +n03171910 +n09955406 +n03266195 +n10217208 +n09338013 +n07594250 +n03215930 +n09725935 +n10592049 +n03732658 +n12498457 +n09966554 +n10668450 +n10361525 +n04060198 +n11936624 +n02602760 +n03942600 +n03708425 +n10020533 +n12067817 +n07590177 +n01891274 +n11837204 +n01419332 +n03860234 +n12616248 +n07834160 +n09867154 +n09788073 +n12222493 +n03388990 +n04245412 +n10182402 +n11675404 +n10450038 +n13045594 +n13158167 +n13082568 +n12052267 +n12707199 +n07810531 +n07914887 +n13127001 +n02573249 +n08619112 +n10471859 +n09919899 +n03635516 +n12067029 +n03352232 +n07765517 +n10519984 +n02742194 +n03062798 +n13124654 +n09958569 +n02370137 +n10121714 +n04019335 +n07732433 +n02559383 +n12585137 +n09729156 +n10744078 +n09954355 +n03078506 +n10062042 +n10688811 +n02668613 +n03142205 +n10347204 +n10518349 +n09898020 +n12563702 +n05468098 +n10116370 +n07838905 +n03127024 +n03545585 +n12801072 +n09940818 +n04480995 +n10466564 +n02606751 +n10032987 +n10771066 +n01587278 +n11852531 +n01455461 +n10397392 +n02349205 +n10180923 +n09778266 +n04366832 +n10051975 +n10538629 +n09865744 +n12554029 +n13118330 +n12952590 +n04187751 +n09924313 +n10062594 +n01980655 +n10028402 +n02567334 +n10590903 +n10265891 +n10739297 +n01457082 +n03437581 +n03713151 +n03475674 +n05464534 +n11863467 +n06592421 +n12491435 +n14914945 +n10279778 +n03388711 +n10483890 +n10612373 +n03332784 +n02332954 +n02952798 +n13041943 +n01607309 +n04356772 +n07711799 +n12670962 +n12229111 +n07878479 +n12401893 +n07772413 +n12138110 +n09781504 +n07902698 +n02750652 +n13042316 +n12400924 +n02304797 +n03066464 +n12852234 +n10155222 +n05541509 +n10711483 +n04210858 +n02835551 +n12859679 +n02935490 +n03540476 +n05279953 +n09807075 +n09617435 +n03566860 +n10549510 +n10025391 +n10754449 +n11927740 +n03554645 +n01837526 +n02656969 +n08648917 +n07860548 +n01452345 +n04021704 +n07783827 +n10080117 +n02187554 +n03214966 +n10036444 +n04291069 +n12407396 +n02170599 +n09896826 +n12417836 +n07845495 +n02749292 +n03061819 +n03682380 +n10756261 +n10369955 +n09692125 +n09978442 +n04277669 +n10539278 +n09703932 +n01879837 +n02746225 +n13159357 +n11763874 +n10540656 +n07933530 +n12987535 +n02371344 +n10654827 +n09723944 +n12775393 +n11856573 +n12626878 +n12716400 +n09903639 +n09784043 +n03906894 +n10775128 +n03124313 +n10396727 +n02841641 +n10211830 +n12283395 +n03490784 +n14175579 +n04027935 +n12396091 +n02609823 +n01414216 +n09880741 +n11976933 +n03073384 +n09270160 +n11768816 +n12073217 +n11597657 +n09994878 +n11756329 +n12579404 +n03161893 +n01451115 +n07736971 +n02949356 +n03878418 +n12653436 +n10626630 +n12777892 +n13061704 +n10498699 +n03609786 +n03199358 +n10776339 +n10762480 +n13179056 +n10113249 +n04029913 +n12640081 +n10493835 +n11683216 +n03524287 +n04585626 +n02969527 +n12976554 +n08569482 +n10204833 +n12442548 +n02577952 +n09357447 +n10202225 +n02198129 +n11882972 +n10404426 +n01600341 +n12016434 +n09867069 +n10576223 +n09893600 +n01702479 +n04274686 +n04406552 +n02848118 +n02258629 +n03260733 +n03685640 +n11751974 +n09967555 +n06274546 +n09649067 +n10681557 +n07606933 +n03110202 +n11982545 +n10803031 +n02679142 +n04086937 +n10514255 +n04506402 +n03884554 +n09970192 +n10117017 +n12642435 +n10186686 +n02097967 +n03956531 +n11834890 +n02677436 +n10040698 +n11796188 +n03348142 +n04168472 +n02294407 +n12483282 +n09429630 +n04423687 +n09819477 +n09755555 +n10157016 +n03344935 +n07762373 +n12871859 +n09853541 +n09875979 +n13050705 +n02251067 +n10637483 +n03823673 +n10357012 +n03424204 +n04431648 +n01475940 +n02339282 +n10248198 +n07683265 +n13150592 +n10359117 +n10096508 +n03473078 +n13052248 +n10743356 +n03710079 +n10634990 +n04507689 +n07921090 +n02352002 +n03924407 +n03609147 +n02837567 +n03406759 +n03909658 +n10286282 +n12135576 +n01912809 +n10801561 +n10717055 +n03473465 +n03761588 +n03144156 +n09474412 +n10253611 +n12549420 +n02499568 +n09910222 +n10431122 +n12699031 +n01697749 +n11786843 +n03888808 +n12089496 +n10066314 +n10302905 +n12696830 +n09965787 +n11969806 +n04066388 +n13080306 +n03913930 +n09968259 +n10490421 +n10714195 +n07570021 +n10343449 +n10401204 +n03472796 +n10779897 +n11787190 +n03503097 +n10439523 +n12123648 +n04279858 +n10511771 +n09755788 +n08253141 +n02616397 +n12248574 +n01645466 +n04334504 +n07729142 +n05451099 +n10503818 +n10354265 +n09707735 +n02633422 +n11999656 +n01324916 +n02088745 +n09354511 +n10705448 +n09756195 +n10136615 +n10427359 +n09702134 +n12600095 +n04122262 +n10791820 +n03330002 +n02713496 +n11710658 +n09664908 +n02550203 +n02349847 +n12835766 +n04098260 +n11536567 +n11686780 +n12875861 +n12758471 +n09806944 +n11810030 +n10400003 +n10098388 +n11663263 +n10559683 +n07833672 +n10753989 +n10643095 +n01988869 +n03112240 +n12911914 +n09979913 +n09785236 +n09790047 +n02676097 +n01653509 +n04601159 +n01938735 +n10748142 +n12978076 +n11990627 +n10437262 +n12972136 +n04077594 +n10148825 +n02269340 +n12886185 +n03608504 +n11677485 +n10612518 +n12267265 +n10649308 +n05458173 +n10650162 +n03213361 +n02747063 +n01611674 +n02322992 +n01554017 +n03512624 +n12773142 +n12747120 +n09902128 +n03162714 +n03924532 +n10299125 +n12378753 +n02778131 +n09976024 +n13093629 +n10778999 +n07721833 +n12232851 +n07876775 +n10097590 +n03194170 +n13029122 +n04573832 +n12859272 +n09639382 +n07688021 +n02878796 +n10751710 +n03633632 +n07762534 +n10779995 +n13914265 +n13093275 +n10729330 +n10433077 +n03663910 +n10499110 +n02272286 +n10371450 +n01967308 +n12633061 +n11659627 +n12982915 +n10344121 +n10268629 +n02697876 +n09879552 +n10167361 +n10719807 +n04042076 +n01632952 +n03243625 +n02125872 +n10105906 +n12194613 +n03149810 +n10721124 +n03947343 +n02020219 +n10122531 +n01315330 +n08647264 +n00452734 +n03607527 +n10010243 +n09863749 +n04473275 +n11782878 +n03585337 +n09655466 +n12989007 +n11711971 +n10716864 +n10475835 +n10704712 +n01894956 +n10568443 +n12881105 +n10387836 +n10403633 +n08645318 +n03500457 +n10377633 +n10108464 +n09933972 +n02618094 +n11798688 +n04155735 +n09780395 +n12822466 +n04302200 +n11899223 +n10633298 +n02760298 +n12142450 +n10803282 +n10769321 +n10514051 +n10597889 +n11837562 +n02261757 +n01458746 +n09830759 +n10003476 +n09817174 +n10738670 +n10118743 +n12096563 +n03054491 +n12155773 +n10439727 +n04170384 +n03223923 +n12632733 +n07845421 +n10062905 +n11831521 +n04267985 +n12796385 +n04154854 +n00444142 +n09778537 +n03115663 +n04385157 +n10109826 +n02337332 +n09996304 +n09880189 +n12871696 +n11823305 +n02516776 +n12377494 +n08511017 +n04421417 +n10765305 +n09675673 +n03488111 +n03076623 +n11829672 +n10292316 +n10758949 +n13031474 +n02829353 +n10090745 +n09186592 +n12736999 +n12715195 +n11684499 +n03168933 +n09890192 +n10596899 +n12527081 +n10496393 +n10497135 +n02137302 +n03266620 +n12958615 +n12664187 +n02633977 +n04262869 +n04215800 +n13133233 +n02392555 +n09858733 +n10186350 +n01715888 +n03142099 +n08573674 +n11687071 +n02690715 +n03146342 +n12331788 +n08079613 +n10609092 +n12943049 +n12234318 +n02312325 +n12618146 +n10135197 +n11705573 +n02794368 +n02850358 +n09464486 +n01993525 +n03187153 +n10097262 +n02976641 +n12198793 +n12941717 +n10219240 +n12434634 +n03827420 +n10437137 +n10342893 +n04174026 +n10265281 +n07757874 +n10765885 +n01470895 +n02349557 +n11716698 +n03765467 +n10227793 +n07824268 +n12994892 +n10486236 +n02974454 +n10718349 +n11726145 +n09909660 +n03378593 +n07805006 +n09875025 +n02645691 +n10223069 +n03722944 +n04389999 +n02544274 +n10239928 +n04456011 +n10382302 +n01552333 +n10082562 +n12952469 +n09883047 +n10442573 +n01891013 +n10690268 +n13111504 +n02287352 +n03567635 +n10331347 +n09762385 +n09933842 +n02369555 +n12291459 +n09919200 +n01492860 +n02067768 +n10713254 +n10550468 +n12846335 +n03835729 +n12467018 +n11676743 +n03629643 +n12987423 +n10655730 +n08678783 +n10349836 +n10087736 +n10246703 +n10338391 +n04585456 +n04158138 +n10500942 +n09850974 +n10791890 +n10020807 +n03315805 +n02752917 +n04033801 +n10492086 +n04427473 +n02940706 +n12110475 +n09832978 +n12515393 +n07800487 +n09848110 +n02659176 +n09967406 +n10536134 +n10760622 +n09736485 +n07830690 +n07835173 +n09814252 +n10311506 +n10341955 +n03869838 +n07760673 +n09970402 +n12526178 +n11687964 +n09968741 +n10719267 +n07851054 +n10116478 +n10599215 +n09951524 +n03855908 +n03997274 +n02986348 +n08599292 +n02474282 +n04155889 +n09983314 +n01987727 +n10280130 +n10404998 +n02294577 +n02998696 +n08586978 +n11652578 +n13867005 +n12663254 +n10524869 +n02287622 +n10220924 +n03279918 +n02626089 +n10291110 +n12820669 +n07861681 +n08643267 +n07720185 +n12555859 +n03225616 +n09769525 +n03295140 +n12489046 +n10615179 +n12150969 +n02888429 +n10753182 +n10267166 +n03675558 +n12693352 +n02378299 +n02788462 +n03622401 +n12236977 +n10730542 +n12758099 +n10502046 +n11937195 +n10366145 +n10307114 +n12984595 +n10128748 +n09362316 +n09789898 +n09654079 +n04260192 +n10114476 +n08623676 +n10331841 +n05265736 +n10269289 +n03090856 +n12764978 +n02825240 +n10358032 +n09825750 +n03062651 +n11196627 +n11825749 +n04148464 +n04439505 +n07572858 +n04561857 +n12904562 +n03643907 +n10723597 +n01492708 +n10071557 +n10140683 +n01739871 +n12984267 +n03072056 +n10772580 +n10462588 +n11936448 +n10494373 +n12845908 +n09793352 +n10717196 +n12577362 +n09779124 +n10663549 +n02286425 +n10380126 +n01890144 +n02751490 +n03361109 +n01781875 +n13128278 +n09994400 +n09883452 +n13881512 +n02833275 +n10362003 +n01376543 +n12366675 +n09984960 +n10173665 +n10673776 +n02057898 +n01934844 +n04057673 +n10018747 +n02916065 +n13024653 +n05539947 +n09648911 +n04150273 +n01393486 +n10411356 +n12232114 +n02436224 +n12757930 +n03095965 +n10555059 +n01577458 +n09666476 +n10598904 +n11656549 +n02591911 +n13092385 +n10506336 +n13103023 +n09658254 +n04095938 +n11936782 +n07824383 +n09781650 +n10240821 +n01780426 +n02850060 +n02863340 +n13914141 +n12138578 +n13034555 +n12291671 +n12133151 +n04515444 +n04591359 +n02589196 +n02689819 +n11740414 +n07610295 +n10246395 +n09921034 +n12447346 +n12641180 +n01419573 +n04242587 +n07760395 +n03399579 +n09866661 +n02549376 +n11861238 +n01588996 +n04319545 +n09789150 +n03288643 +n10312491 +n03353281 +n02345997 +n09711132 +n03043173 +n02558860 +n03703590 +n03188871 +n12589142 +n12113323 +n09987161 +n05242239 +n09686262 +n09780984 +n09668199 +n09716933 +n11675738 +n04459243 +n11833749 +n10646942 +n07760070 +n10286539 +n04469684 +n13030616 +n03939440 +n01725086 +n09967816 +n10500824 +n13026015 +n03983928 +n02936921 +n04115542 +n10245029 +n12105828 +n12452673 +n10498046 +n10737264 +n11766046 +n04079603 +n10072054 +n12569037 +n10153155 +n09867311 +n02806992 +n10258602 +n10164025 +n10520964 +n02258508 +n12199399 +n05266096 +n08496334 +n10351064 +n12441552 +n12878325 +n13102648 +n02980625 +n03462972 +n12395906 +n13022903 +n11895714 +n03324814 +n11318824 +n01728266 +n07883510 +n10731013 +n10181799 +n12142357 +n09671089 +n11531334 +n01718414 +n04573625 +n10390600 +n11553522 +n01314910 +n04227519 +n10514784 +n02944256 +n12103680 +n03081859 +n11655592 +n12569616 +n10700105 +n09755086 +n03865820 +n01456137 +n10442232 +n02900987 +n04491934 +n07849026 +n04519728 +n09986450 +n03305300 +n10186143 +n02879422 +n03018614 +n10747548 +n10562509 +n10068425 +n12593341 +n11937692 +n08679562 +n09613690 +n10646433 +n12251740 +n10994097 +n13048447 +n03848537 +n12153741 +n12614096 +n11654438 +n09985470 +n10562968 +n02923915 +n10740594 +n07802767 +n12514592 +n10335801 +n03878674 +n12586499 +n10255459 +n02413824 +n10312600 +n02616128 +n12644283 +n04238953 +n04526520 +n01898593 +n09737161 +n03372822 +n09781398 +n10339251 +n02502807 +n10198832 +n10679610 +n13136781 +n11974373 +n11680457 +n10083677 +n04037298 +n09945021 +n09987239 +n02708885 +n13107807 +n10130877 +n12507379 +n08651104 +n12116058 +n10135297 +n04269086 +n03858533 +n10477955 +n04394031 +n10442417 +n10074735 +n03618797 +n03460455 +n04374521 +n10756061 +n08517010 +n12923108 +n02362194 +n01704103 +n10062492 +n01394771 +n10473789 +n10330593 +n02748183 +n12562141 +n09745933 +n02505485 +n11922661 +n12018014 +n09866922 +n04067143 +n13161254 +n07813495 +n01374846 +n10213429 +n03253071 +n02546028 +n01642097 +n01475232 +n03212247 +n10155600 +n11689957 +n11738997 +n10525878 +n03301389 +n10589666 +n01908958 +n10289766 +n03900028 +n03437295 +n02987823 +n02739123 +n10505347 +n02546627 +n10381804 +n10132502 +n10336904 +n10189597 +n09786115 +n12875697 +n10761519 +n01470733 +n02875626 +n12111238 +n07862770 +n07856895 +n09996039 +n03368048 +n07913300 +n10062996 +n10555430 +n04302863 +n12758555 +n10740732 +n02385898 +n02385098 +n12162758 +n03887899 +n03976268 +n04234160 +n03641947 +n07857076 +n10578656 +n12135729 +n12675515 +n09032191 +n12969670 +n02600503 +n12518013 +n10227166 +n10121026 +n01801672 +n10661216 +n03244388 +n04147291 +n09664556 +n02539573 +n04480141 +n10601362 +n02613572 +n10537906 +n02613820 +n11656771 +n03841011 +n02845985 +n12534208 +n10241024 +n03645290 +n12743976 +n11922839 +n07709701 +n03066232 +n03467380 +n09266604 +n09663786 +n12775070 +n02427183 +n04083113 +n12896615 +n10501453 +n02345774 +n09965515 +n09704157 +n10666752 +n03846970 +n04167661 +n03991321 +n09556121 +n10686517 +n02586238 +n03594277 +n03591313 +n10391416 +n10756837 +n13163649 +n03971960 +n10245341 +n02577041 +n04481642 +n12373739 +n10214062 +n10091997 +n10275848 +n02090253 +n03514340 +n04593629 +n11795216 +n03126927 +n11871748 +n10272782 +n12056099 +n04484024 +n03101375 +n12255225 +n10724372 +n10531838 +n02354781 +n02389865 +n02853336 +n01477080 +n01779939 +n10776052 +n10724132 +n10284871 +n10554141 +n03898787 +n02366301 +n10721612 +n04421740 +n04256758 +n01445593 +n10103921 +n02729222 +n02530188 +n02387452 +n02601921 +n01711160 +n02474110 +n09869447 +n12789977 +n10158506 +n10396908 +n07839593 +n02662825 +n02473720 +n13034788 +n07752602 +n03762238 +n10262880 +n07770180 +n04030054 +n10151367 +n03525252 +n10252075 +n10747424 +n10191388 +n04130566 +n03951068 +n13239921 +n03733547 +n10358124 +n11549779 +n09203827 +n04043168 +n10359422 +n04286960 +n04237287 +n10130686 +n02338449 +n12912274 +n10586998 +n02812785 +n10364502 +n03955941 +n12324222 +n09743601 +n03766600 +n01427399 +n12968309 +n11776234 +n01501777 +n10051026 +n10397001 +n01516212 +n02596252 +n02225081 +n10479328 +n02109687 +n10181445 +n02248062 +n03802973 +n01639187 +n02142734 +n02342534 +n02410141 +n02743426 +n03950359 +n12253835 +n07805478 +n03706415 +n03578981 +n04560619 +n09761753 +n03524425 +n01962788 +n04350235 +n10686694 +n13139321 +n10195155 +n12335937 +n12758399 +n03805374 +n12895298 +n03800371 +n11972959 +n11530008 +n03178538 +n02217839 +n10591072 +n04033557 +n01880813 +n12292877 +n02430643 +n07599383 +n01954516 +n09894909 +n02474605 +n03576443 +n07595051 +n03367875 +n12945549 +n02360480 +n14583400 +n04208582 +n02405577 +n02550655 +n02513355 +n04381450 +n00444490 +n03567912 +n09937688 +n07932323 +n04029416 +n01913346 +n13237508 +n04437276 +n12938445 +n03042384 +n12543639 +n03194992 +n04094250 +n12045514 +n03825913 +n03504293 +n12758250 +n03547861 +n03649288 +n04572235 +n07569423 +n03534695 +n03253714 +n01501641 +n13906767 +n12578255 +n11749603 +n07742513 +n07609083 +n04214413 +n07595751 +n12013701 +n12592839 +n12949160 +n04093223 +n02983072 +n03510072 +n02966068 +n03867854 +n01747285 +n10691318 +n13091982 +n12574470 +n02255023 +n03449217 +n03153585 +n04006227 +n13140049 +n02965024 +n03805503 +n03911406 +n13120958 +n12203699 +n01456454 +n10397142 +n12920043 +n02412977 +n08674344 +n07801007 +n03037590 +n10361296 +n13133316 +n03483637 +n04435759 +n12983873 +n02627037 +n03783304 +n07725158 +n02921292 +n01788864 +n01705010 +n12616996 +n03903290 +n08662427 +n03667060 +n07856992 +n03252422 +n02449699 +n12137954 +n10024025 +n07891095 +n04337157 +n04368109 +n03015631 +n02363996 +n12824289 +n03206602 +n12799269 +n02333733 +n01793565 +n01721898 +n03178173 +n02844056 +n11688378 +n13889066 +n02637475 +n03750437 +n01403457 +n01717229 +n02677136 +n12512294 +n03736269 +n02838577 +n08661878 +n01993830 +n02777638 +n02900857 +n04023021 +n03843092 +n07770439 +n12928491 +n03697812 +n02639922 +n13139482 +n07771082 +n12487058 +n07774182 +n02122810 +n02856362 +n11686195 +n11687432 +n02853870 +n04239218 +n02665250 +n02938218 +n11746600 +n10183347 +n10681194 +n04164199 +n04407257 +n12549005 +n02331842 +n03862379 +n02863638 +n11962994 +n03091907 +n04177654 +n02252972 +n02403153 +n01376437 +n02848806 +n08579266 +n07616265 +n10331258 +n10765587 +n09433312 +n03412387 +n10178077 +n13123841 +n02532918 +n04144651 +n03296963 +n03450881 +n04348988 +n10425946 +n03257065 +n02354320 +n11689197 +n04084682 +n10140783 +n03637027 +n02346170 +n02559144 +n01705591 +n09400584 +n03840327 +n03918074 +n04053767 +n02406046 +n00288190 +n03160001 +n03366464 +n09249155 +n01324305 +n07556872 +n03381565 +n12705220 +n11874878 +n02632494 +n02502006 +n03146560 +n02179340 +n04312756 +n10162016 +n03800563 +n04140853 +n07933652 +n03075248 +n04421582 +n10652703 +n02218134 +n12233249 +n04578559 +n01781071 +n02615298 +n04436832 +n04054566 +n02608284 +n11674019 +n03505764 +n02662397 +n09422190 +n04382537 +n04355684 +n04383923 +n09888635 +n03783575 +n03228796 +n07772026 +n02381119 +n15060326 +n10586166 +n12647787 +n02458517 +n10281546 +n03498866 +n02485988 +n10121246 +n09391644 +n03103904 +n08676253 +n02203978 +n04092168 +n03213014 +n03138217 +n04135933 +n12612811 +n04478066 +n02157285 +n02543255 +n03863783 +n01502101 +n03930229 +n12439830 +n09425019 +n02618513 +n02910241 +n12261359 +n03648667 +n04365229 +n03461651 +n04388040 +n03295928 +n03581531 +n04203356 +n02622249 +n13142907 +n04497249 +n11678377 +n02366579 +n02931013 +n02837134 +n03132438 +n13092987 +n04196803 +n03056215 +n03255322 +n02130925 +n10291469 +n02971940 +n01718096 +n12510774 +n11766432 +n04271891 +n03366721 +n03154616 +n03694356 +n10478293 +n11763142 +n07763483 +n03037228 +n09201998 +n01517389 +n00443517 +n12693244 +n03580990 +n03519848 +n10238375 +n10783646 +n03564849 +n03975926 +n02473554 +n02450426 +n03464952 +n04411835 +n04573045 +n10505732 +n04337650 +n10621514 +n10334782 +n12434985 +n07769102 +n10594523 +n05475397 +n01875610 +n03299406 +n10507692 +n02593679 +n03317233 +n13239736 +n03550420 +n03247351 +n03819047 +n03633341 +n03154745 +n04073425 +n04532022 +n02910964 +n04301242 +n04378651 +n13098515 +n11775626 +n14603798 +n10263146 +n01886045 +n03761731 +n02224713 +n04591249 +n02144251 +n03849412 +n11548728 +n04051705 +n12298165 +n03150795 +n03989447 +n02826459 +n07602650 +n03155915 +n09891730 +n02067603 +n01523105 +n03618339 +n03897130 +n02711780 +n05285623 +n03533486 +n04085873 +n01923404 +n10139077 +n01709484 +n02183507 +n03216562 +n01971850 +n03136051 +n02948834 +n03589313 +n03665851 +n02937336 +n02035656 +n07769465 +n07849186 +n12585373 +n12280364 +n02846260 +n02511730 +n02614653 +n04193179 +n11718681 +n09467696 +n01522450 +n03040836 +n03162297 +n11896141 +n04000480 +n10350220 +n07746038 +n02124157 +n10655169 +n03476542 +n03895038 +n00443917 +n07757753 +n01726203 +n02987706 +n12750076 +n03012734 +n02941228 +n04194009 +n04501127 +n09794550 +n03510487 +n08589670 +n03166951 +n03673270 +n09792125 +n08492354 +n02396157 +n01628331 +n03993878 +n07833816 +n04958865 +n13650447 +n04339191 +n02826683 +n02893269 +n02810139 +n02626471 +n02589796 +n08677801 +n04325968 +n03275864 +n02622547 +n04406687 +n04097085 +n02998107 +n07831450 +n03658102 +n02575590 +n03523398 +n02412909 +n02953850 +n04337503 +n03510987 +n12664005 +n03710294 +n13138155 +n10110093 +n07831955 +n03932080 +n12971804 +n03943623 +n03726371 +n10531445 +n12984489 +n07835051 +n12097556 +n02685701 +n03038041 +n02451125 +n04594919 +n02372140 +n02665985 +n03496183 +n03961828 +n03802800 +n01713170 +n03602790 +n04974145 +n02780588 +n04031884 +n03588216 +n02614140 +n04578708 +n04501281 +n03166600 +n03992975 +n04206070 +n03227721 +n02582349 +n02664642 +n07805389 +n09226869 +n02459190 +n12216968 +n03628984 +n02524928 +n09209025 +n04078002 +n03167153 +n03562565 +n07599554 +n10252547 +n03279804 +n07692887 +n14909584 +n02529293 +n04444953 +n04156814 +n07616174 +n03415626 +n03331244 +n03868324 +n03644073 +n02818687 +n10085101 +n02953056 +n03202481 +n02118707 +n03591901 +n12602434 +n02943465 +n02818254 +n07922607 +n02597004 +n04212810 +n04056073 +n12327528 +n02207647 +n01792808 +n03002555 +n03951213 +n12242123 +n10062275 +n12325787 +n10048117 +n11937278 +n03624767 +n04039041 +n04059298 +n03707171 +n07758407 +n01333483 +n02219015 +n02436645 +n02478239 +n04457638 +n01781698 +n09474765 +n03686363 +n10769084 +n09456207 +n02385776 +n13555775 +n03962685 +n13129078 +n03463185 +n01429172 +n04243251 +n12177129 +n03143754 +n03958338 +n02791795 +n04560502 +n12776774 +n02745816 +n03009111 +n02976552 +n03008817 +n03211413 +n03537550 +n12200504 +n01909788 +n11790089 +n03480973 +n10507070 +n01707294 +n04374907 +n04281571 +n00006024 +n03823906 +n12603273 +n03503358 +n04027820 +n12645530 +n02535080 +n04143365 +n08385989 +n12661227 +n12814857 +n11871059 +n04268418 +n13128582 +n01928865 +n04359124 +n12670334 +n03610836 +n04543924 +n02252799 +n15102359 +n04437380 +n04316924 +n11872324 +n09330378 +n10122300 +n03784139 +n00443375 +n14993378 +n01721174 +n00004475 +n00006484 +n00007846 +n00015388 +n00017222 +n00021265 +n00021939 +n00288000 +n00433458 +n00433661 +n00433802 +n00439826 +n00440218 +n00440509 +n00440747 +n00441824 +n00442115 +n00442981 +n00443231 +n00444651 +n00445351 +n00445802 +n00447073 +n00447221 +n00447540 +n00448466 +n00448640 +n00448958 +n00449295 +n00449695 +n00450335 +n00450700 +n00451370 +n00451866 +n00452293 +n00453935 +n00454237 +n00454624 +n00463246 +n00464651 +n00464894 +n00467719 +n00467995 +n00468480 +n00469651 +n00471437 +n00471613 +n00479076 +n00480508 +n00480993 +n00482298 +n00523513 +n01035667 +n01316422 +n01316579 +n01316949 +n01317089 +n01317391 +n01317541 +n01319467 +n01320872 +n01321230 +n01321579 +n01321854 +n01322343 +n01322685 +n01322898 +n01323068 +n01326291 +n01329186 +n01338685 +n01339336 +n01340935 +n01342269 +n01358572 +n01367772 +n01375204 +n01376237 +n01380610 +n01384687 +n01385330 +n01387065 +n01389507 +n01390123 +n01392380 +n01395254 +n01397114 +n01402600 +n01407798 +n01421807 +n01438208 +n01439121 +n01439514 +n01439808 +n01441425 +n01444783 +n01445429 +n01446589 +n01446760 +n01448951 +n01450661 +n01454856 +n01455778 +n01458842 +n01459791 +n01461646 +n01466257 +n01467336 +n01468238 +n01468712 +n01471682 +n01473806 +n01474283 +n01477525 +n01478511 +n01480516 +n01480880 +n01481331 +n01482071 +n01482330 +n01483522 +n01484097 +n01488918 +n01491874 +n01492357 +n01493541 +n01494757 +n01494882 +n01495006 +n01495701 +n01497118 +n01498406 +n01498699 +n01498989 +n01500091 +n01501160 +n01503061 +n01514752 +n01515078 +n01517565 +n01524359 +n01525720 +n01527194 +n01527617 +n01528654 +n01529672 +n01533339 +n01534582 +n01534762 +n01537134 +n01538955 +n01539573 +n01540233 +n01541922 +n01542786 +n01544208 +n01546921 +n01547832 +n01548301 +n01549430 +n01550761 +n01553142 +n01555809 +n01557185 +n01560105 +n01560636 +n01563128 +n01563746 +n01564394 +n01567133 +n01568132 +n01569836 +n01570676 +n01571904 +n01572328 +n01573074 +n01574045 +n01574390 +n01575745 +n01576695 +n01577659 +n01578575 +n01579028 +n01580379 +n01580490 +n01580772 +n01580870 +n01581166 +n01581434 +n01581730 +n01582398 +n01582498 +n01582856 +n01584225 +n01585121 +n01587834 +n01588431 +n01589286 +n01591697 +n01592257 +n01592540 +n01594372 +n01595624 +n01597336 +n01598588 +n01598988 +n01600085 +n01600657 +n01602080 +n01602209 +n01602630 +n01603600 +n01604330 +n01605630 +n01608814 +n01609062 +n01609391 +n01609751 +n01610955 +n01611472 +n01612628 +n01613294 +n01613615 +n01615121 +n01616551 +n01616764 +n01617095 +n01617443 +n01617766 +n01618082 +n01618922 +n01619310 +n01619536 +n01619835 +n01620135 +n01620414 +n01620735 +n01621127 +n01622352 +n01623706 +n01627424 +n01629276 +n01630284 +n01631175 +n01632047 +n01637112 +n01637932 +n01639765 +n01640846 +n01645776 +n01649170 +n01650167 +n01651487 +n01653773 +n01661091 +n01661592 +n01661818 +n01662622 +n01662784 +n01663401 +n01664369 +n01665932 +n01667432 +n01668091 +n01669372 +n01670092 +n01672032 +n01674216 +n01674464 +n01674990 +n01676755 +n01680264 +n01680478 +n01681940 +n01684133 +n01685439 +n01686044 +n01686220 +n01686403 +n01686609 +n01686808 +n01687665 +n01688961 +n01689411 +n01691951 +n01692864 +n01693783 +n01694709 +n01696633 +n01697178 +n01698434 +n01699040 +n01701551 +n01702256 +n01703011 +n01703569 +n01705934 +n01708106 +n01708998 +n01712008 +n01712752 +n01717016 +n01719403 +n01722998 +n01724231 +n01726692 +n01727646 +n01730185 +n01730307 +n01730812 +n01730960 +n01731545 +n01732244 +n01733757 +n01734637 +n01734808 +n01735439 +n01735577 +n01735728 +n01737472 +n01737728 +n01737875 +n01738065 +n01738601 +n01739647 +n01740551 +n01741232 +n01741562 +n01741943 +n01743605 +n01745125 +n01745484 +n01746359 +n01747885 +n01749582 +n01749742 +n01751036 +n01752165 +n01753959 +n01754876 +n01755740 +n01767661 +n01769347 +n01770795 +n01771417 +n01772222 +n01775370 +n01776192 +n01776705 +n01777304 +n01777467 +n01777649 +n01777909 +n01778217 +n01778487 +n01778621 +n01778801 +n01779148 +n01779463 +n01779629 +n01780696 +n01782209 +n01785667 +n01789386 +n01789740 +n01791107 +n01791625 +n01792158 +n01792640 +n01794158 +n01795088 +n01795735 +n01795900 +n01796019 +n01796105 +n01796519 +n01796729 +n01798706 +n01798839 +n01798979 +n01799302 +n01800424 +n01801088 +n01801479 +n01802721 +n01803078 +n01804478 +n01804653 +n01804921 +n01805070 +n01805801 +n01806847 +n01807828 +n01808140 +n01808291 +n01808596 +n01809106 +n01810700 +n01811909 +n01812337 +n01813385 +n01814370 +n01814921 +n01815601 +n01816887 +n01819115 +n01820348 +n01820801 +n01821076 +n01821203 +n01822602 +n01823013 +n01824749 +n01825930 +n01826364 +n01827403 +n01829869 +n01831712 +n01832167 +n01834177 +n01834540 +n01835276 +n01838038 +n01838598 +n01839598 +n01841102 +n01843719 +n01844231 +n01844551 +n01844917 +n01845132 +n01845477 +n01846331 +n01848123 +n01848648 +n01849466 +n01850373 +n01851375 +n01852142 +n01852861 +n01853498 +n01854415 +n01856072 +n01856155 +n01856380 +n01856553 +n01856890 +n01857079 +n01857325 +n01857512 +n01857632 +n01857851 +n01858441 +n01859496 +n01860497 +n01861148 +n01861778 +n01871543 +n01871875 +n01874434 +n01874928 +n01876326 +n01877134 +n01878061 +n01878335 +n01878639 +n01878929 +n01879217 +n01879509 +n01880152 +n01881171 +n01883513 +n01883920 +n01886756 +n01887896 +n01888264 +n01889074 +n01889520 +n01890860 +n01891633 +n01892551 +n01894207 +n01905661 +n01906749 +n01907738 +n01909422 +n01911403 +n01911839 +n01912454 +n01914163 +n01914830 +n01915811 +n01916187 +n01916925 +n01918744 +n01922303 +n01925270 +n01925695 +n01926379 +n01926689 +n01927159 +n01927456 +n01927928 +n01928215 +n01930852 +n01931140 +n01931520 +n01931714 +n01932151 +n01932936 +n01933151 +n01933478 +n01933988 +n01934440 +n01935176 +n01936391 +n01937909 +n01940736 +n01941223 +n01942177 +n01942869 +n01943541 +n01944118 +n01944812 +n01944955 +n01945143 +n01945340 +n01945845 +n01946277 +n01948573 +n01951613 +n01953361 +n01955933 +n01956481 +n01958038 +n01959985 +n01960459 +n01963571 +n01964049 +n01964441 +n01965889 +n01967094 +n01968315 +n01969726 +n01971094 +n01971280 +n01974773 +n01975687 +n01976146 +n01976957 +n01978930 +n01981702 +n01982650 +n01983048 +n01985493 +n01985797 +n01986806 +n01987545 +n01988701 +n01989869 +n01990007 +n01991028 +n01991520 +n01992262 +n01992423 +n01992773 +n01996585 +n01998183 +n02000954 +n02002075 +n02005790 +n02006985 +n02007284 +n02008041 +n02008796 +n02010453 +n02011805 +n02011943 +n02012185 +n02013177 +n02014941 +n02015554 +n02016358 +n02016956 +n02018027 +n02019190 +n02019438 +n02019929 +n02021050 +n02021795 +n02022684 +n02023341 +n02025043 +n02026059 +n02028175 +n02030035 +n02030287 +n02030996 +n02031934 +n02033208 +n02033324 +n02033561 +n02034129 +n02034661 +n02036053 +n02037464 +n02039171 +n02040505 +n02041085 +n02041246 +n02043063 +n02044178 +n02044778 +n02045369 +n02046759 +n02047260 +n02047614 +n02048698 +n02049532 +n02050004 +n02051474 +n02052204 +n02052365 +n02053083 +n02054502 +n02055658 +n02055803 +n02057731 +n02058594 +n02058747 +n02059162 +n02060411 +n02060889 +n02062017 +n02062430 +n02062744 +n02063224 +n02064338 +n02066707 +n02068206 +n02068974 +n02069701 +n02070430 +n02073250 +n02075296 +n02075927 +n02076196 +n02076779 +n02077152 +n02077658 +n02078292 +n02078574 +n02078738 +n02079005 +n02079389 +n02081571 +n02083346 +n02083672 +n02084071 +n02084861 +n02085374 +n02086346 +n02086478 +n02087122 +n02087551 +n02088839 +n02089232 +n02089555 +n02090475 +n02090827 +n02092468 +n02093056 +n02094562 +n02094721 +n02095050 +n02095412 +n02095727 +n02096756 +n02097786 +n02098550 +n02099029 +n02099997 +n02100399 +n02101108 +n02101861 +n02102605 +n02103406 +n02103841 +n02104523 +n02104882 +n02106966 +n02107420 +n02108254 +n02108672 +n02109150 +n02109811 +n02110532 +n02111626 +n02112497 +n02112826 +n02113335 +n02114100 +n02115012 +n02115335 +n02117512 +n02117646 +n02117900 +n02118176 +n02118333 +n02119247 +n02119359 +n02120278 +n02120997 +n02121620 +n02121808 +n02122725 +n02123785 +n02124623 +n02127292 +n02127381 +n02127482 +n02127586 +n02127678 +n02127808 +n02128598 +n02128669 +n02129463 +n02129530 +n02129837 +n02129923 +n02130545 +n02131653 +n02132466 +n02132580 +n02132788 +n02133400 +n02134971 +n02135220 +n02137722 +n02137888 +n02138647 +n02138777 +n02139199 +n02139671 +n02141306 +n02141713 +n02144593 +n02145424 +n02148835 +n02149420 +n02150482 +n02152740 +n02152991 +n02153203 +n02153809 +n02156732 +n02159955 +n02164464 +n02165877 +n02166229 +n02166567 +n02166826 +n02167505 +n02167820 +n02167944 +n02168245 +n02169023 +n02169218 +n02169705 +n02169974 +n02170400 +n02170993 +n02171453 +n02171869 +n02172518 +n02172678 +n02172761 +n02172870 +n02174355 +n02176261 +n02178411 +n02178717 +n02179012 +n02180233 +n02181235 +n02181724 +n02182045 +n02182355 +n02182642 +n02182930 +n02183857 +n02186153 +n02188699 +n02189363 +n02190790 +n02191273 +n02191773 +n02191979 +n02192252 +n02192513 +n02192814 +n02193009 +n02193163 +n02194249 +n02194750 +n02195091 +n02195526 +n02195819 +n02196344 +n02198532 +n02199502 +n02200198 +n02202287 +n02204722 +n02206270 +n02207179 +n02207449 +n02208280 +n02208498 +n02208848 +n02208979 +n02209111 +n02209354 +n02209624 +n02209964 +n02210427 +n02210921 +n02211444 +n02211627 +n02211896 +n02212062 +n02212602 +n02212958 +n02213107 +n02215161 +n02215770 +n02217563 +n02218713 +n02220055 +n02220225 +n02220518 +n02220804 +n02221083 +n02221414 +n02221571 +n02221715 +n02221820 +n02222035 +n02222321 +n02222582 +n02223266 +n02223520 +n02226183 +n02226821 +n02226970 +n02227247 +n02227604 +n02227966 +n02228341 +n02228697 +n02229156 +n02229765 +n02230023 +n02230187 +n02230480 +n02230634 +n02231052 +n02231803 +n02233943 +n02234355 +n02234570 +n02234848 +n02235205 +n02236241 +n02236896 +n02237424 +n02237581 +n02238235 +n02238887 +n02239528 +n02241569 +n02241799 +n02243562 +n02244173 +n02246011 +n02246628 +n02247511 +n02248368 +n02248510 +n02248887 +n02249515 +n02250822 +n02251775 +n02252226 +n02253127 +n02253715 +n02254697 +n02257003 +n02257284 +n02257715 +n02259377 +n02260421 +n02260863 +n02261419 +n02262178 +n02263378 +n02264885 +n02265330 +n02268148 +n02269196 +n02269522 +n02270011 +n02270200 +n02271570 +n02271897 +n02272871 +n02274024 +n02274259 +n02274822 +n02278210 +n02278839 +n02279637 +n02280458 +n02281015 +n02281136 +n02281267 +n02282257 +n02282385 +n02282553 +n02282903 +n02283077 +n02283201 +n02283951 +n02285548 +n02287004 +n02287799 +n02288789 +n02291220 +n02291572 +n02291748 +n02293352 +n02293868 +n02295064 +n02295390 +n02295870 +n02298541 +n02300173 +n02301452 +n02302459 +n02302620 +n02305407 +n02306433 +n02307325 +n02308139 +n02308471 +n02309337 +n02310000 +n02310717 +n02311060 +n02312006 +n02312427 +n02313008 +n02316707 +n02318167 +n02319308 +n02319555 +n02319829 +n02320127 +n02322047 +n02323449 +n02323902 +n02324045 +n02325722 +n02325884 +n02326074 +n02326763 +n02326862 +n02327028 +n02327175 +n02327435 +n02327656 +n02327842 +n02328429 +n02329401 +n02330245 +n02331046 +n02331309 +n02332755 +n02333546 +n02334460 +n02335127 +n02336011 +n02336641 +n02338901 +n02339376 +n02339922 +n02343058 +n02343320 +n02343772 +n02344528 +n02345600 +n02346998 +n02347274 +n02347573 +n02347744 +n02348173 +n02348788 +n02350105 +n02350989 +n02351870 +n02352591 +n02353861 +n02355227 +n02355477 +n02358091 +n02359324 +n02360781 +n02361587 +n02361706 +n02361850 +n02363245 +n02363351 +n02364520 +n02369680 +n02370806 +n02372584 +n02373336 +n02374149 +n02374451 +n02376542 +n02376791 +n02376918 +n02377181 +n02377480 +n02377703 +n02378415 +n02380335 +n02380583 +n02380745 +n02381460 +n02382437 +n02382948 +n02384858 +n02386014 +n02386310 +n02386496 +n02388276 +n02389346 +n02389559 +n02390454 +n02390834 +n02391234 +n02391373 +n02391508 +n02391994 +n02393580 +n02394477 +n02395003 +n02395694 +n02395931 +n02397529 +n02399000 +n02401031 +n02402010 +n02402175 +n02402425 +n02403325 +n02403454 +n02404186 +n02404573 +n02406174 +n02407959 +n02408660 +n02408817 +n02409870 +n02410702 +n02410900 +n02411705 +n02412440 +n02413131 +n02414578 +n02415435 +n02416519 +n02417070 +n02417534 +n02418064 +n02419796 +n02423218 +n02423362 +n02423589 +n02424305 +n02424695 +n02426813 +n02427724 +n02428349 +n02430045 +n02430559 +n02431122 +n02432511 +n02433546 +n02433925 +n02435853 +n02437136 +n02437971 +n02438173 +n02438272 +n02439033 +n02441326 +n02442172 +n02442336 +n02442446 +n02442572 +n02442668 +n02443015 +n02443346 +n02443808 +n02443959 +n02444251 +n02445004 +n02445171 +n02446206 +n02446352 +n02446645 +n02447021 +n02447762 +n02448060 +n02448633 +n02448885 +n02450034 +n02453108 +n02453611 +n02454794 +n02455135 +n02455428 +n02455720 +n02456008 +n02456275 +n02456962 +n02460009 +n02469914 +n02470325 +n02470899 +n02471300 +n02471762 +n02472293 +n02473307 +n02474777 +n02476219 +n02480153 +n02481103 +n02481235 +n02481366 +n02481500 +n02482060 +n02482286 +n02482474 +n02482650 +n02483092 +n02484322 +n02484473 +n02485225 +n02485371 +n02485536 +n02485688 +n02486657 +n02486908 +n02487079 +n02487547 +n02487675 +n02487847 +n02488003 +n02488415 +n02488894 +n02489589 +n02490597 +n02490811 +n02491107 +n02491329 +n02491474 +n02496913 +n02501583 +n02502514 +n02503127 +n02503517 +n02504770 +n02507649 +n02508021 +n02512053 +n02512938 +n02513560 +n02515214 +n02516188 +n02517442 +n02517938 +n02519148 +n02519686 +n02521646 +n02522399 +n02524524 +n02526425 +n02526818 +n02527057 +n02527271 +n02527622 +n02528163 +n02529772 +n02530421 +n02532028 +n02532602 +n02533209 +n02533834 +n02534559 +n02534734 +n02535537 +n02537085 +n02537319 +n02538406 +n02538985 +n02540412 +n02541687 +n02546331 +n02548689 +n02549989 +n02550460 +n02552171 +n02554730 +n02556846 +n02557591 +n02557749 +n02559862 +n02561108 +n02561661 +n02562315 +n02562796 +n02563182 +n02564720 +n02565573 +n02566109 +n02568959 +n02569484 +n02570838 +n02572196 +n02574910 +n02576223 +n02576575 +n02578233 +n02579557 +n02580336 +n02581957 +n02583567 +n02585872 +n02586543 +n02588286 +n02590495 +n02590702 +n02590987 +n02594250 +n02596381 +n02597367 +n02599052 +n02599958 +n02600298 +n02601344 +n02602405 +n02603317 +n02604157 +n02605316 +n02606384 +n02607201 +n02607862 +n02613181 +n02614482 +n02614978 +n02619165 +n02621908 +n02623445 +n02624167 +n02625612 +n02626762 +n02627835 +n02630281 +n02630739 +n02631041 +n02636170 +n02636854 +n02638596 +n02640626 +n02640857 +n02642107 +n02642644 +n02643112 +n02644113 +n02646667 +n02648625 +n02650050 +n02650541 +n02652668 +n02653145 +n02653786 +n02654425 +n02655523 +n02656670 +n02657368 +n02658079 +n02661017 +n02662239 +n02663849 +n02667379 +n02667576 +n02668393 +n02670382 +n02671780 +n02672371 +n02676261 +n02676670 +n02677028 +n02677718 +n02678384 +n02680110 +n02680754 +n02682407 +n02682922 +n02683791 +n02686121 +n02686568 +n02687992 +n02688443 +n02689274 +n02691156 +n02692513 +n02693413 +n02693540 +n02694426 +n02694966 +n02695627 +n02697576 +n02698244 +n02700258 +n02700895 +n02702989 +n02703275 +n02705944 +n02708224 +n02708555 +n02709367 +n02709637 +n02710600 +n02712643 +n02713218 +n02715229 +n02715513 +n02715712 +n02716626 +n02726305 +n02726681 +n02727016 +n02727825 +n02728440 +n02729837 +n02729965 +n02730265 +n02732072 +n02732827 +n02733213 +n02733524 +n02735361 +n02735688 +n02736798 +n02737660 +n02738031 +n02738271 +n02738535 +n02739550 +n02739668 +n02740533 +n02740764 +n02741475 +n02742322 +n02742753 +n02745492 +n02746365 +n02749790 +n02750169 +n02751067 +n02751295 +n02752496 +n02753044 +n02753394 +n02754103 +n02755352 +n02755529 +n02756098 +n02756977 +n02757462 +n02757810 +n02758134 +n02758960 +n02759700 +n02759963 +n02760099 +n02760199 +n02760429 +n02760855 +n02761392 +n02763198 +n02763714 +n02764044 +n02764614 +n02764779 +n02765028 +n02766320 +n02766534 +n02766792 +n02767433 +n02769075 +n02770830 +n02772554 +n02772700 +n02773037 +n02773838 +n02774152 +n02774630 +n02775483 +n02776205 +n02777100 +n02777734 +n02777927 +n02778456 +n02778669 +n02781121 +n02781338 +n02781517 +n02783035 +n02783324 +n02784998 +n02785648 +n02786198 +n02786463 +n02788689 +n02789487 +n02790823 +n02792552 +n02792948 +n02793842 +n02794008 +n02794779 +n02794972 +n02795783 +n02796207 +n02796623 +n02796995 +n02797692 +n02797881 +n02799897 +n02801184 +n02801525 +n02801938 +n02802721 +n02803349 +n02803666 +n02804252 +n02806088 +n02806379 +n02806875 +n02810471 +n02811468 +n02811719 +n02812201 +n02813252 +n02813399 +n02815478 +n02815950 +n02816494 +n02817031 +n02817650 +n02817799 +n02818832 +n02819697 +n02820210 +n02821627 +n02821943 +n02822220 +n02822399 +n02822865 +n02823335 +n02824448 +n02826589 +n02826886 +n02827606 +n02828299 +n02828884 +n02831335 +n02831724 +n02831894 +n02833793 +n02834778 +n02835412 +n02836268 +n02839351 +n02839910 +n02840619 +n02841063 +n02841506 +n02842133 +n02843029 +n02843777 +n02844214 +n02844307 +n02844714 +n02847631 +n02848216 +n02848523 +n02849154 +n02850950 +n02851099 +n02853016 +n02854532 +n02854926 +n02855089 +n02855390 +n02855793 +n02857365 +n02857477 +n02857644 +n02858304 +n02860415 +n02861886 +n02862048 +n02862916 +n02863750 +n02865665 +n02865931 +n02866578 +n02867715 +n02869737 +n02871631 +n02871824 +n02871963 +n02872752 +n02873839 +n02874086 +n02875436 +n02876326 +n02876457 +n02876657 +n02877962 +n02879517 +n02880189 +n02880546 +n02880940 +n02881193 +n02881906 +n02882483 +n02882647 +n02883004 +n02883344 +n02884225 +n02885108 +n02885338 +n02886599 +n02887209 +n02887970 +n02888569 +n02889425 +n02891188 +n02891788 +n02892499 +n02893418 +n02896294 +n02896442 +n02897389 +n02897820 +n02898173 +n02898369 +n02898585 +n02898711 +n02900705 +n02901481 +n02901901 +n02902079 +n02902916 +n02903006 +n02904109 +n02904640 +n02908217 +n02909285 +n02911485 +n02912065 +n02913152 +n02914991 +n02916179 +n02916350 +n02917377 +n02917607 +n02919414 +n02920503 +n02921884 +n02923129 +n02924116 +n02925519 +n02928413 +n02928608 +n02929289 +n02929462 +n02929923 +n02931417 +n02931836 +n02932019 +n02932400 +n02933112 +n02933462 +n02933750 +n02933990 +n02934168 +n02935658 +n02935891 +n02936176 +n02936281 +n02936714 +n02938886 +n02939866 +n02941095 +n02942699 +n02943241 +n02943871 +n02944826 +n02945161 +n02946270 +n02946348 +n02946921 +n02947212 +n02947818 +n02948557 +n02949202 +n02950186 +n02950256 +n02950632 +n02950943 +n02951843 +n02952485 +n02952674 +n02953673 +n02954163 +n02954340 +n02954938 +n02955065 +n02955247 +n02955540 +n02955767 +n02957135 +n02957755 +n02958343 +n02959942 +n02961451 +n02961947 +n02963302 +n02963692 +n02963821 +n02965216 +n02965300 +n02965529 +n02966545 +n02966786 +n02966942 +n02967081 +n02967991 +n02968473 +n02969010 +n02969163 +n02969634 +n02969886 +n02970685 +n02970849 +n02971691 +n02972397 +n02973017 +n02974697 +n02975212 +n02976939 +n02978205 +n02978753 +n02979516 +n02982599 +n02983189 +n02983904 +n02984061 +n02984203 +n02984469 +n02984699 +n02985137 +n02985828 +n02986066 +n02987047 +n02987492 +n02989099 +n02991048 +n02991302 +n02992032 +n02993546 +n02995998 +n02997391 +n02997607 +n03001282 +n03001627 +n03002210 +n03003091 +n03004620 +n03005515 +n03007130 +n03007591 +n03010656 +n03010795 +n03011018 +n03011355 +n03012159 +n03013006 +n03014440 +n03015254 +n03017070 +n03018209 +n03020034 +n03020416 +n03020692 +n03024333 +n03025070 +n03025886 +n03027108 +n03027250 +n03029066 +n03031422 +n03032811 +n03033362 +n03033986 +n03034516 +n03034663 +n03035510 +n03036469 +n03036866 +n03037108 +n03037709 +n03038685 +n03039015 +n03039947 +n03040229 +n03040376 +n03043274 +n03043958 +n03045337 +n03046257 +n03048883 +n03049066 +n03049457 +n03050026 +n03050546 +n03050655 +n03050864 +n03051396 +n03051540 +n03052464 +n03052917 +n03053047 +n03054901 +n03055670 +n03056097 +n03056493 +n03057021 +n03057636 +n03058107 +n03058603 +n03058949 +n03059366 +n03061050 +n03063073 +n03063338 +n03064350 +n03064758 +n03065708 +n03066849 +n03070193 +n03071021 +n03071160 +n03072201 +n03073296 +n03073977 +n03074380 +n03074855 +n03075097 +n03075500 +n03075634 +n03076411 +n03076708 +n03078287 +n03078670 +n03079230 +n03079741 +n03080497 +n03080731 +n03081986 +n03082127 +n03082807 +n03082979 +n03084420 +n03085333 +n03085602 +n03085915 +n03086183 +n03086457 +n03086670 +n03087366 +n03087643 +n03087816 +n03088707 +n03091044 +n03091374 +n03092166 +n03092314 +n03093792 +n03094503 +n03096439 +n03096960 +n03098140 +n03098806 +n03099454 +n03099771 +n03099945 +n03100346 +n03100490 +n03101156 +n03101986 +n03102654 +n03102859 +n03106722 +n03106898 +n03107046 +n03109881 +n03111690 +n03112869 +n03113152 +n03113657 +n03113835 +n03114839 +n03115180 +n03116530 +n03116767 +n03117199 +n03118346 +n03118969 +n03119510 +n03120198 +n03120491 +n03121897 +n03122748 +n03123809 +n03125870 +n03128085 +n03128427 +n03128519 +n03129001 +n03130066 +n03130563 +n03131669 +n03132261 +n03134853 +n03135917 +n03136369 +n03137579 +n03139464 +n03140900 +n03141065 +n03141327 +n03143572 +n03145384 +n03145843 +n03146846 +n03147509 +n03148324 +n03148727 +n03149401 +n03151077 +n03153948 +n03154073 +n03154446 +n03155178 +n03156071 +n03156405 +n03157348 +n03158796 +n03158885 +n03161450 +n03162818 +n03163798 +n03163973 +n03164605 +n03164722 +n03164929 +n03165823 +n03167978 +n03168107 +n03168217 +n03170635 +n03171356 +n03172965 +n03173387 +n03175604 +n03176386 +n03177165 +n03177708 +n03178000 +n03178430 +n03180504 +n03180969 +n03181293 +n03182140 +n03182232 +n03182912 +n03183080 +n03186818 +n03187751 +n03189818 +n03193597 +n03196062 +n03196324 +n03196598 +n03199647 +n03199901 +n03200357 +n03200539 +n03200701 +n03200906 +n03201035 +n03201638 +n03201996 +n03202354 +n03202760 +n03203089 +n03203806 +n03204306 +n03204558 +n03204955 +n03205143 +n03205304 +n03206718 +n03206908 +n03207305 +n03208556 +n03210683 +n03211117 +n03211616 +n03212811 +n03214253 +n03214450 +n03215191 +n03219135 +n03220237 +n03221059 +n03221720 +n03222516 +n03223162 +n03223441 +n03224753 +n03224893 +n03225777 +n03226538 +n03228016 +n03228533 +n03228692 +n03229115 +n03229526 +n03231160 +n03231819 +n03235796 +n03235979 +n03236580 +n03236735 +n03237212 +n03237639 +n03239259 +n03239726 +n03240140 +n03241093 +n03241335 +n03241496 +n03242120 +n03242506 +n03242995 +n03243218 +n03245271 +n03245421 +n03246933 +n03250952 +n03251533 +n03251766 +n03252324 +n03252637 +n03254374 +n03255488 +n03255899 +n03256788 +n03256928 +n03257586 +n03258905 +n03259505 +n03261776 +n03262519 +n03262809 +n03262932 +n03265032 +n03266749 +n03267821 +n03269203 +n03269401 +n03270695 +n03271765 +n03271865 +n03272239 +n03272383 +n03273061 +n03273913 +n03274561 +n03274796 +n03276179 +n03277459 +n03277771 +n03278248 +n03279153 +n03279364 +n03279508 +n03280394 +n03280644 +n03281145 +n03282060 +n03282401 +n03284743 +n03284981 +n03285912 +n03286572 +n03287733 +n03288003 +n03289985 +n03291413 +n03292960 +n03294048 +n03294833 +n03296478 +n03297103 +n03297644 +n03297735 +n03298089 +n03302790 +n03303217 +n03303831 +n03304197 +n03304465 +n03305522 +n03307573 +n03308152 +n03309808 +n03314378 +n03314884 +n03315644 +n03316406 +n03318136 +n03319457 +n03320046 +n03322570 +n03322940 +n03323703 +n03324928 +n03325088 +n03326073 +n03327234 +n03327691 +n03327841 +n03329663 +n03330792 +n03334017 +n03334492 +n03334912 +n03335030 +n03335846 +n03336839 +n03337494 +n03338287 +n03338821 +n03339296 +n03339643 +n03340009 +n03340923 +n03342961 +n03343354 +n03343560 +n03343853 +n03346135 +n03346455 +n03349296 +n03350352 +n03350456 +n03350602 +n03351262 +n03351979 +n03352628 +n03354903 +n03355468 +n03356446 +n03357267 +n03357716 +n03359137 +n03359566 +n03360731 +n03361683 +n03362771 +n03363363 +n03364008 +n03364937 +n03365592 +n03365991 +n03366823 +n03373237 +n03374649 +n03374838 +n03375171 +n03376279 +n03378342 +n03379343 +n03379828 +n03379989 +n03380647 +n03380867 +n03381126 +n03381231 +n03381776 +n03382856 +n03382969 +n03383468 +n03384167 +n03384891 +n03385557 +n03386011 +n03387323 +n03387653 +n03390327 +n03391770 +n03393324 +n03394480 +n03394649 +n03396580 +n03396654 +n03397266 +n03397532 +n03398228 +n03399761 +n03399971 +n03402188 +n03402369 +n03404012 +n03404360 +n03404449 +n03405265 +n03405725 +n03407369 +n03409393 +n03409591 +n03410147 +n03411339 +n03412058 +n03412220 +n03412511 +n03412906 +n03413264 +n03413428 +n03413828 +n03414162 +n03415252 +n03416489 +n03416775 +n03417345 +n03418158 +n03418242 +n03419014 +n03422072 +n03422589 +n03423719 +n03424630 +n03427296 +n03428090 +n03428349 +n03429003 +n03429288 +n03429914 +n03430091 +n03430313 +n03430551 +n03430959 +n03431243 +n03431745 +n03433637 +n03433877 +n03434285 +n03434830 +n03435593 +n03437941 +n03438257 +n03439814 +n03441112 +n03442288 +n03442756 +n03446070 +n03446832 +n03448031 +n03448956 +n03449564 +n03449858 +n03450516 +n03452267 +n03452449 +n03453320 +n03454110 +n03454211 +n03454707 +n03455355 +n03456548 +n03456665 +n03457008 +n03457686 +n03458271 +n03459914 +n03461882 +n03465500 +n03465818 +n03466162 +n03466839 +n03467517 +n03467796 +n03467984 +n03468696 +n03469493 +n03470387 +n03470629 +n03470948 +n03472232 +n03472535 +n03472937 +n03473817 +n03473966 +n03475823 +n03476083 +n03476313 +n03477773 +n03477902 +n03478756 +n03478907 +n03481521 +n03482523 +n03483230 +n03483531 +n03484083 +n03484931 +n03487331 +n03487444 +n03487774 +n03488188 +n03488603 +n03489162 +n03490324 +n03490449 +n03490884 +n03491988 +n03496296 +n03496612 +n03497100 +n03497657 +n03498536 +n03499468 +n03500295 +n03501152 +n03501288 +n03501614 +n03502331 +n03502509 +n03502777 +n03503718 +n03503997 +n03505383 +n03505504 +n03506370 +n03507963 +n03508101 +n03509394 +n03509843 +n03510583 +n03510866 +n03511175 +n03512147 +n03512911 +n03513137 +n03513376 +n03515338 +n03517899 +n03517982 +n03518631 +n03519674 +n03521076 +n03521544 +n03522634 +n03524574 +n03524976 +n03525074 +n03525454 +n03525827 +n03528263 +n03529444 +n03531281 +n03531447 +n03531546 +n03532342 +n03534776 +n03535024 +n03536761 +n03537412 +n03538037 +n03538300 +n03538634 +n03538957 +n03540267 +n03540595 +n03541091 +n03541696 +n03541923 +n03542333 +n03542860 +n03543603 +n03544360 +n03545150 +n03546340 +n03547054 +n03547530 +n03548930 +n03550153 +n03550289 +n03551084 +n03551790 +n03552449 +n03552749 +n03553486 +n03554460 +n03555426 +n03555662 +n03557590 +n03558176 +n03558404 +n03558739 +n03561169 +n03563200 +n03563710 +n03563967 +n03565288 +n03565565 +n03566329 +n03568117 +n03568818 +n03571942 +n03572205 +n03574555 +n03574816 +n03575958 +n03576215 +n03577672 +n03577818 +n03578055 +n03578251 +n03578656 +n03579538 +n03579982 +n03583621 +n03584400 +n03585073 +n03588951 +n03589513 +n03589791 +n03590306 +n03590932 +n03592245 +n03592773 +n03593526 +n03595409 +n03595860 +n03596285 +n03597317 +n03598151 +n03598299 +n03598646 +n03600977 +n03601638 +n03601840 +n03602081 +n03603722 +n03604629 +n03604843 +n03605722 +n03605915 +n03606465 +n03609235 +n03609542 +n03610418 +n03610992 +n03612814 +n03613294 +n03613592 +n03614007 +n03614532 +n03615563 +n03617095 +n03617594 +n03618546 +n03618982 +n03619396 +n03619650 +n03619793 +n03619890 +n03620052 +n03621049 +n03621694 +n03622931 +n03623556 +n03624134 +n03625355 +n03626115 +n03631177 +n03631811 +n03632852 +n03633886 +n03635032 +n03635668 +n03635932 +n03636248 +n03636649 +n03638883 +n03639675 +n03640988 +n03642444 +n03646296 +n03646916 +n03647520 +n03651388 +n03653220 +n03653454 +n03654576 +n03655072 +n03656484 +n03657239 +n03658858 +n03659292 +n03660124 +n03661340 +n03662719 +n03662887 +n03663531 +n03664675 +n03664943 +n03665366 +n03666362 +n03666917 +n03667235 +n03667829 +n03671914 +n03672827 +n03673450 +n03673767 +n03676759 +n03677766 +n03679384 +n03679712 +n03681477 +n03682487 +n03684823 +n03685307 +n03685820 +n03686130 +n03686470 +n03687928 +n03688943 +n03689157 +n03689570 +n03690851 +n03691817 +n03692379 +n03693293 +n03697552 +n03698604 +n03699280 +n03699975 +n03700963 +n03701191 +n03701391 +n03701640 +n03701790 +n03702248 +n03704834 +n03705379 +n03706653 +n03707597 +n03708036 +n03709206 +n03709363 +n03709545 +n03710528 +n03711711 +n03711999 +n03712887 +n03713069 +n03714235 +n03715386 +n03715669 +n03715892 +n03716966 +n03717131 +n03718212 +n03718335 +n03718699 +n03718789 +n03719053 +n03721590 +n03722007 +n03722288 +n03724176 +n03725035 +n03725717 +n03726516 +n03726760 +n03726993 +n03727837 +n03727946 +n03728437 +n03728982 +n03729647 +n03729951 +n03730153 +n03730788 +n03731695 +n03733644 +n03733925 +n03735637 +n03736970 +n03738241 +n03738472 +n03739518 +n03739693 +n03743902 +n03744276 +n03744684 +n03744840 +n03745571 +n03746330 +n03748162 +n03749504 +n03749807 +n03750206 +n03751065 +n03752185 +n03752922 +n03753077 +n03753514 +n03758894 +n03759432 +n03760671 +n03762982 +n03763727 +n03764276 +n03765561 +n03765934 +n03766322 +n03768132 +n03769722 +n03770954 +n03772077 +n03772674 +n03773035 +n03775199 +n03775847 +n03779000 +n03779370 +n03780047 +n03781787 +n03782190 +n03785499 +n03787523 +n03789171 +n03789400 +n03789946 +n03790230 +n03790512 +n03790755 +n03791235 +n03792048 +n03792526 +n03793850 +n03795976 +n03796181 +n03797390 +n03798982 +n03799113 +n03800485 +n03800772 +n03800933 +n03802007 +n03802228 +n03802393 +n03803116 +n03809312 +n03811295 +n03811444 +n03811847 +n03811965 +n03812382 +n03812924 +n03813176 +n03813946 +n03815278 +n03815482 +n03815615 +n03816005 +n03816136 +n03816849 +n03817647 +n03819595 +n03819994 +n03820154 +n03820318 +n03820728 +n03820950 +n03824197 +n03825080 +n03827536 +n03828020 +n03829340 +n03831757 +n03834040 +n03834604 +n03836062 +n03837422 +n03838748 +n03839172 +n03839276 +n03839795 +n03841666 +n03842156 +n03844045 +n03844233 +n03845190 +n03846234 +n03846772 +n03847471 +n03847823 +n03848168 +n03848348 +n03849275 +n03850613 +n03851341 +n03851787 +n03852280 +n03852688 +n03854815 +n03859280 +n03859495 +n03859958 +n03861430 +n03861842 +n03862676 +n03863923 +n03864139 +n03864356 +n03864692 +n03865371 +n03865949 +n03868406 +n03871083 +n03871524 +n03871724 +n03873848 +n03874138 +n03874823 +n03875218 +n03880129 +n03880323 +n03880531 +n03883054 +n03883773 +n03883944 +n03884639 +n03885535 +n03885669 +n03886053 +n03886641 +n03887185 +n03888022 +n03889503 +n03889726 +n03891051 +n03892557 +n03894051 +n03894379 +n03896103 +n03896233 +n03896419 +n03896628 +n03896984 +n03897943 +n03898271 +n03898633 +n03899612 +n03899933 +n03901338 +n03903133 +n03903424 +n03904060 +n03904183 +n03904433 +n03905540 +n03906997 +n03907654 +n03908204 +n03909160 +n03909406 +n03915118 +n03915437 +n03916470 +n03916720 +n03917327 +n03918480 +n03920737 +n03923564 +n03923692 +n03924069 +n03926148 +n03926412 +n03926876 +n03927792 +n03928116 +n03929091 +n03929202 +n03929443 +n03930515 +n03932670 +n03936269 +n03938522 +n03939677 +n03940256 +n03941684 +n03943920 +n03945615 +n03947111 +n03947466 +n03948459 +n03951971 +n03953020 +n03953416 +n03955809 +n03956785 +n03956922 +n03957315 +n03957762 +n03958630 +n03958752 +n03959014 +n03959701 +n03961939 +n03962525 +n03962932 +n03963028 +n03965907 +n03966325 +n03966751 +n03966976 +n03967942 +n03968293 +n03971321 +n03972524 +n03973520 +n03973628 +n03975035 +n03979377 +n03979492 +n03980026 +n03981340 +n03982232 +n03982895 +n03984234 +n03984381 +n03985232 +n03986704 +n03988170 +n03989665 +n03990474 +n03991443 +n03992325 +n03992703 +n03993180 +n03993403 +n03994008 +n03994757 +n03995018 +n03995856 +n03996145 +n03996416 +n03997484 +n03999992 +n04000311 +n04001397 +n04001499 +n04001845 +n04004210 +n04004475 +n04005912 +n04007664 +n04010057 +n04010779 +n04010927 +n04011827 +n04012084 +n04013729 +n04014297 +n04015204 +n04016576 +n04016684 +n04018399 +n04018667 +n04019101 +n04019696 +n04020087 +n04020298 +n04020912 +n04021028 +n04021362 +n04021798 +n04022332 +n04022708 +n04023249 +n04024274 +n04026053 +n04026918 +n04027023 +n04027706 +n04028315 +n04029734 +n04030274 +n04036303 +n04037964 +n04038440 +n04038727 +n04039848 +n04042358 +n04042632 +n04042795 +n04042985 +n04043733 +n04044307 +n04044498 +n04045085 +n04045397 +n04046590 +n04046974 +n04047401 +n04049405 +n04050066 +n04051549 +n04051825 +n04052757 +n04056932 +n04057047 +n04057435 +n04057846 +n04057981 +n04058096 +n04058239 +n04059947 +n04060647 +n04060904 +n04061793 +n04061969 +n04062644 +n04063373 +n04063868 +n04064401 +n04065464 +n04065789 +n04067231 +n04067353 +n04067921 +n04068441 +n04068601 +n04069276 +n04069777 +n04070207 +n04070964 +n04071102 +n04071263 +n04071393 +n04072193 +n04072551 +n04073948 +n04075468 +n04075916 +n04076284 +n04077430 +n04077734 +n04078574 +n04079106 +n04079244 +n04079933 +n04080454 +n04080833 +n04081844 +n04083649 +n04086794 +n04087126 +n04087709 +n04088696 +n04088797 +n04089666 +n04089976 +n04090548 +n04091097 +n04093625 +n04095210 +n04096066 +n04097622 +n04097866 +n04099175 +n04099429 +n04100174 +n04101497 +n04101701 +n04102037 +n04102285 +n04102406 +n04102962 +n04104147 +n04104500 +n04105068 +n04105438 +n04105893 +n04107984 +n04108268 +n04110068 +n04110654 +n04110955 +n04111190 +n04111414 +n04111668 +n04113765 +n04114996 +n04115256 +n04115996 +n04116389 +n04118021 +n04121228 +n04122349 +n04122492 +n04122825 +n04123123 +n04123567 +n04123740 +n04125116 +n04125853 +n04126541 +n04126659 +n04126980 +n04127904 +n04128499 +n04128837 +n04131929 +n04134632 +n04136510 +n04137444 +n04137897 +n04138977 +n04139859 +n04140064 +n04140631 +n04141838 +n04143897 +n04146050 +n04147495 +n04148054 +n04149083 +n04151108 +n04151581 +n04151940 +n04152387 +n04154753 +n04156297 +n04156411 +n04157320 +n04158807 +n04158956 +n04160372 +n04160586 +n04161358 +n04161981 +n04164757 +n04164868 +n04166111 +n04167489 +n04169437 +n04170037 +n04171459 +n04171629 +n04171831 +n04174101 +n04174500 +n04176068 +n04176190 +n04176528 +n04177329 +n04177545 +n04180063 +n04180888 +n04181228 +n04181718 +n04182322 +n04183217 +n04183329 +n04184435 +n04184600 +n04185071 +n04186051 +n04186268 +n04186455 +n04186624 +n04186848 +n04187061 +n04187547 +n04187885 +n04189092 +n04190052 +n04190464 +n04190747 +n04190997 +n04191150 +n04191595 +n04191943 +n04192238 +n04192858 +n04194289 +n04196080 +n04197391 +n04198015 +n04198797 +n04199027 +n04201733 +n04202417 +n04205318 +n04206356 +n04207763 +n04210390 +n04211356 +n04211970 +n04215910 +n04216634 +n04216860 +n04216963 +n04217718 +n04217882 +n04219424 +n04221823 +n04222210 +n04222470 +n04222847 +n04225031 +n04225222 +n04225729 +n04226464 +n04226537 +n04227900 +n04229007 +n04229107 +n04229480 +n04230603 +n04230808 +n04231693 +n04232153 +n04233832 +n04234455 +n04235291 +n04235771 +n04236001 +n04236377 +n04236702 +n04238617 +n04241042 +n04241394 +n04242408 +n04243003 +n04243941 +n04244997 +n04245847 +n04246855 +n04247630 +n04247736 +n04248507 +n04249415 +n04250224 +n04250599 +n04253931 +n04255499 +n04256520 +n04260589 +n04261116 +n04262678 +n04263336 +n04263760 +n04264233 +n04264914 +n04266486 +n04267577 +n04269944 +n04270891 +n04271148 +n04272054 +n04272782 +n04273064 +n04273796 +n04275283 +n04275661 +n04275904 +n04278353 +n04279172 +n04279987 +n04280259 +n04280970 +n04283585 +n04283905 +n04284002 +n04285146 +n04285622 +n04285803 +n04286128 +n04288272 +n04288533 +n04288673 +n04289449 +n04291242 +n04291759 +n04292414 +n04292572 +n04293119 +n04293744 +n04294212 +n04294426 +n04295081 +n04295881 +n04299215 +n04300358 +n04301000 +n04301474 +n04303258 +n04304375 +n04305471 +n04306080 +n04306847 +n04307419 +n04307878 +n04308084 +n04308273 +n04308397 +n04308583 +n04308807 +n04309348 +n04309833 +n04310721 +n04311595 +n04312154 +n04312432 +n04313220 +n04314914 +n04315828 +n04315948 +n04317420 +n04318131 +n04318982 +n04319937 +n04320405 +n04322026 +n04322692 +n04322801 +n04323819 +n04326799 +n04326896 +n04328054 +n04328329 +n04328946 +n04329477 +n04330340 +n04330669 +n04330998 +n04331277 +n04332987 +n04333129 +n04338517 +n04339638 +n04340750 +n04340935 +n04341133 +n04341414 +n04341686 +n04346679 +n04347519 +n04348184 +n04348359 +n04349401 +n04350104 +n04350458 +n04354589 +n04356595 +n04358707 +n04358874 +n04359335 +n04359589 +n04360501 +n04360798 +n04361095 +n04361260 +n04362821 +n04363210 +n04363874 +n04364545 +n04364827 +n04364994 +n04365328 +n04365484 +n04365751 +n04368695 +n04370048 +n04371563 +n04373894 +n04375775 +n04377057 +n04378956 +n04379243 +n04379964 +n04380346 +n04381994 +n04382334 +n04382880 +n04383130 +n04383301 +n04386664 +n04387201 +n04387400 +n04388162 +n04388743 +n04389521 +n04390873 +n04391838 +n04392526 +n04393095 +n04394261 +n04395875 +n04397168 +n04397261 +n04397645 +n04398497 +n04398688 +n04398834 +n04399046 +n04400289 +n04401088 +n04402057 +n04402580 +n04402746 +n04402984 +n04403638 +n04404817 +n04404997 +n04405540 +n04405762 +n04407435 +n04407686 +n04409128 +n04409806 +n04410086 +n04410365 +n04410485 +n04411264 +n04411966 +n04413151 +n04413419 +n04415663 +n04416901 +n04417180 +n04417361 +n04417809 +n04419073 +n04421872 +n04422875 +n04427715 +n04428008 +n04431436 +n04431745 +n04434932 +n04435180 +n04436185 +n04436401 +n04436542 +n04437670 +n04437953 +n04438304 +n04438643 +n04440963 +n04441662 +n04444749 +n04445040 +n04445952 +n04446276 +n04447276 +n04447443 +n04448070 +n04448361 +n04450243 +n04450640 +n04450749 +n04451818 +n04452615 +n04452848 +n04453156 +n04453666 +n04453910 +n04454654 +n04455250 +n04455652 +n04456472 +n04457326 +n04458843 +n04459362 +n04459610 +n04460130 +n04462011 +n04463679 +n04464852 +n04467099 +n04467307 +n04468005 +n04469251 +n04470741 +n04471315 +n04471632 +n04472243 +n04472726 +n04473884 +n04474466 +n04475411 +n04475631 +n04477548 +n04478512 +n04478657 +n04480527 +n04481524 +n04487724 +n04488427 +n04489008 +n04489817 +n04490091 +n04491769 +n04493109 +n04494204 +n04495450 +n04497442 +n04497570 +n04498523 +n04499446 +n04499554 +n04500060 +n04501837 +n04502197 +n04502502 +n04502670 +n04502851 +n04504141 +n04504770 +n04505036 +n04506994 +n04507453 +n04508163 +n04508489 +n04508949 +n04509260 +n04509592 +n04511002 +n04514241 +n04516116 +n04516214 +n04516672 +n04518132 +n04519153 +n04520170 +n04520382 +n04521987 +n04524313 +n04527648 +n04529681 +n04530566 +n04531098 +n04531873 +n04533042 +n04533199 +n04533700 +n04534127 +n04534895 +n04536153 +n04538552 +n04539203 +n04540761 +n04541320 +n04543158 +n04544450 +n04546194 +n04546855 +n04547592 +n04549122 +n04549919 +n04551055 +n04552696 +n04553389 +n04554871 +n04555600 +n04555897 +n04556948 +n04557308 +n04557751 +n04558059 +n04558804 +n04559023 +n04559730 +n04562262 +n04563204 +n04565375 +n04566257 +n04567098 +n04568069 +n04568557 +n04569520 +n04569822 +n04570958 +n04571292 +n04571566 +n04571958 +n04572935 +n04574471 +n04574999 +n04576002 +n04576211 +n04576971 +n04577426 +n04577769 +n04578801 +n04579230 +n04580493 +n04581595 +n04582349 +n04583620 +n04585745 +n04585980 +n04586932 +n04587648 +n04588739 +n04589190 +n04589434 +n04591056 +n04591887 +n04592005 +n04592099 +n04594218 +n04594489 +n04595285 +n04595855 +n04596852 +n04597066 +n04597804 +n04598136 +n04598582 +n04599124 +n04600312 +n04600486 +n04600912 +n04603729 +n04603872 +n04605726 +n04606574 +n04608329 +n04608567 +n04609531 +n04609651 +n04610176 +n04610503 +n04610676 +n04611916 +n04613015 +n04615226 +n04615644 +n04950713 +n04951373 +n04958634 +n04959672 +n04960277 +n04961691 +n04963740 +n04965179 +n04965661 +n04967191 +n04968895 +n04970059 +n04970631 +n04970916 +n04972801 +n04973386 +n04976952 +n05238282 +n05241218 +n05242070 +n05244934 +n05266879 +n05399034 +n05447757 +n05449959 +n05453657 +n05467758 +n05586759 +n06254669 +n06262567 +n06263369 +n06263609 +n06263762 +n06266417 +n06266710 +n06267145 +n06271778 +n06272290 +n06272803 +n06274092 +n06275353 +n06276697 +n06277280 +n06281040 +n06359467 +n06359657 +n06418693 +n06591815 +n06592078 +n06595351 +n06613686 +n06793231 +n07556637 +n07556970 +n07557165 +n07557434 +n07560652 +n07561112 +n07562495 +n07563800 +n07564629 +n07564971 +n07565725 +n07565945 +n07566340 +n07566863 +n07567390 +n07567707 +n07568818 +n07569106 +n07569543 +n07570720 +n07572353 +n07572957 +n07573103 +n07573696 +n07574602 +n07575076 +n07575726 +n07575984 +n07576182 +n07576438 +n07576577 +n07577374 +n07579575 +n07580053 +n07580359 +n07580470 +n07581346 +n07581775 +n07582277 +n07582441 +n07582609 +n07583197 +n07584228 +n07584593 +n07585208 +n07587441 +n07587700 +n07588947 +n07590320 +n07591473 +n07592094 +n07592656 +n07593774 +n07595914 +n07596046 +n07596452 +n07596684 +n07597145 +n07597365 +n07598734 +n07599468 +n07599783 +n07599998 +n07600506 +n07601407 +n07605474 +n07605944 +n07606278 +n07606764 +n07607707 +n07609407 +n07609840 +n07611148 +n07611358 +n07611839 +n07611991 +n07612367 +n07612632 +n07612996 +n07613671 +n07614198 +n07614825 +n07615052 +n07615190 +n07615460 +n07615569 +n07615671 +n07616590 +n07617188 +n07619004 +n07623136 +n07624466 +n07627931 +n07628068 +n07641928 +n07642471 +n07642933 +n07643306 +n07643474 +n07643764 +n07643981 +n07644244 +n07663899 +n07678729 +n07679356 +n07680517 +n07680932 +n07681926 +n07682316 +n07682624 +n07683786 +n07684600 +n07685730 +n07686873 +n07687211 +n07687469 +n07687789 +n07689003 +n07690273 +n07690892 +n07692405 +n07692614 +n07693889 +n07693972 +n07694403 +n07695878 +n07695965 +n07697100 +n07704054 +n07705931 +n07707451 +n07708512 +n07708798 +n07709333 +n07710007 +n07710283 +n07710616 +n07710952 +n07712063 +n07712382 +n07712748 +n07712856 +n07713395 +n07713895 +n07714078 +n07714802 +n07714895 +n07715561 +n07715721 +n07716034 +n07717070 +n07717858 +n07718671 +n07719437 +n07719839 +n07720442 +n07720615 +n07721325 +n07721456 +n07721678 +n07722217 +n07722763 +n07723330 +n07723559 +n07723753 +n07724943 +n07725376 +n07725531 +n07726796 +n07727578 +n07727868 +n07728804 +n07729000 +n07729485 +n07730406 +n07730855 +n07731122 +n07731587 +n07731952 +n07732302 +n07732747 +n07734017 +n07734292 +n07735052 +n07735803 +n07737081 +n07739125 +n07739506 +n07740220 +n07740954 +n07741461 +n07742012 +n07742704 +n07744246 +n07747055 +n07747811 +n07747951 +n07748753 +n07748912 +n07749095 +n07749192 +n07749312 +n07749731 +n07750586 +n07751451 +n07752377 +n07752664 +n07753743 +n07755089 +n07755411 +n07755707 +n07756096 +n07757132 +n07757312 +n07757602 +n07757990 +n07758680 +n07758950 +n07759424 +n07759691 +n07759816 +n07760501 +n07761141 +n07761309 +n07761611 +n07761777 +n07761954 +n07767344 +n07767847 +n07770571 +n07771212 +n07800091 +n07800740 +n07801508 +n07802152 +n07802417 +n07803093 +n07803545 +n07804323 +n07805254 +n07805594 +n07805731 +n07806221 +n07806633 +n07807317 +n07807710 +n07807922 +n07809096 +n07809368 +n07810907 +n07811416 +n07812184 +n07814203 +n07815588 +n07818277 +n07819480 +n07820497 +n07820814 +n07823951 +n07824702 +n07824988 +n07825717 +n07828987 +n07829412 +n07830593 +n07832902 +n07834507 +n07836731 +n07837002 +n07837362 +n07838233 +n07841495 +n07841639 +n07841907 +n07842753 +n07842972 +n07843464 +n07843775 +n07844042 +n07844604 +n07846143 +n07847198 +n07848338 +n07848771 +n07849336 +n07850083 +n07850329 +n07851298 +n07852045 +n07852919 +n07854813 +n07856270 +n07857959 +n07858595 +n07859284 +n07859583 +n07860805 +n07861158 +n07861813 +n07863374 +n07864638 +n07865105 +n07867421 +n07867883 +n07869391 +n07869775 +n07870313 +n07871436 +n07873464 +n07874063 +n07874159 +n07874259 +n07874343 +n07874441 +n07874780 +n07875693 +n07875835 +n07876281 +n07880751 +n07881117 +n07881205 +n07881404 +n07881800 +n07882497 +n07882886 +n07883031 +n07883251 +n07883384 +n07884567 +n07886572 +n07886849 +n07887634 +n07888465 +n07888909 +n07889510 +n07890352 +n07890750 +n07891726 +n07892813 +n07893528 +n07893891 +n07894102 +n07894298 +n07894965 +n07895237 +n07895435 +n07895595 +n07895710 +n07895839 +n07896287 +n07897200 +n07897865 +n07898117 +n07898333 +n07898745 +n07899108 +n07900406 +n07900616 +n07901587 +n07903208 +n07904395 +n07905038 +n07906284 +n07906877 +n07907161 +n07907548 +n07907943 +n07909129 +n07909811 +n07911371 +n07911677 +n07912211 +n07913393 +n07914413 +n07915618 +n07916041 +n07917618 +n07918028 +n07920222 +n07921455 +n07921948 +n07923748 +n07924033 +n07924560 +n07924834 +n07925966 +n07926920 +n07927197 +n07927931 +n07929519 +n07930554 +n07931001 +n07931096 +n07932614 +n07932841 +n07933274 +n07933891 +n07934032 +n07934530 +n07935152 +n07935504 +n07936263 +n07936745 +n07938149 +n07951464 +n08554440 +n08558963 +n08596076 +n08598301 +n08616050 +n08640531 +n08659446 +n09191635 +n09206896 +n09206985 +n09210862 +n09213434 +n09213565 +n09214060 +n09214916 +n09215437 +n09217230 +n09230041 +n09233446 +n09238926 +n09255070 +n09259025 +n09259219 +n09262690 +n09265620 +n09269882 +n09270735 +n09287968 +n09289331 +n09289596 +n09290444 +n09295946 +n09300306 +n09302616 +n09303008 +n09303528 +n09304750 +n09305031 +n09308572 +n09309292 +n09315159 +n09326662 +n09335693 +n09335809 +n09336555 +n09337253 +n09344198 +n09352849 +n09359803 +n09362945 +n09366017 +n09366317 +n09375606 +n09376526 +n09381242 +n09393605 +n09396465 +n09398677 +n09405787 +n09406793 +n09409512 +n09409752 +n09410224 +n09416076 +n09421799 +n09428628 +n09432990 +n09433442 +n09437454 +n09439213 +n09443641 +n09453008 +n09458269 +n09472413 +n09474010 +n09505153 +n09606009 +n09606527 +n09608709 +n09610405 +n09613191 +n09615336 +n09616922 +n09619168 +n09619452 +n09620078 +n09620794 +n09622049 +n09622302 +n09624168 +n09624559 +n09625401 +n09626238 +n09627906 +n09629246 +n09629752 +n09631129 +n09632274 +n09632518 +n09633969 +n09636339 +n09638875 +n09639919 +n09641002 +n09644152 +n09648743 +n09651123 +n09665545 +n09669631 +n09670280 +n09676884 +n09679925 +n09690208 +n09694771 +n09696585 +n09697401 +n09700964 +n09701148 +n09701833 +n09705124 +n09708750 +n09710164 +n09716047 +n09718217 +n09722658 +n09724785 +n09725229 +n09725772 +n09726621 +n09727440 +n09727826 +n09730204 +n09731436 +n09731571 +n09735258 +n09738400 +n09744679 +n09754217 +n09758173 +n09758885 +n09761068 +n09763784 +n09764201 +n09764598 +n09765278 +n09767197 +n09769076 +n09770179 +n09771435 +n09772746 +n09773962 +n09774783 +n09790482 +n09792555 +n09795124 +n09795334 +n09800964 +n09802445 +n09802641 +n09805151 +n09805475 +n09809538 +n09809749 +n09810166 +n09811712 +n09814660 +n09815790 +n09816771 +n09818022 +n09820263 +n09821831 +n09823502 +n09824135 +n09824609 +n09826204 +n09830194 +n09831962 +n09834699 +n09836160 +n09840217 +n09841188 +n09841515 +n09841696 +n09842047 +n09848489 +n09851575 +n09853645 +n09853881 +n09854915 +n09857007 +n09861946 +n09865398 +n09868270 +n09871681 +n09877951 +n09889691 +n09892693 +n09894654 +n09895222 +n09895701 +n09902353 +n09903153 +n09910374 +n09917593 +n09918248 +n09923418 +n09923673 +n09924996 +n09927089 +n09927451 +n09928136 +n09928451 +n09929298 +n09930257 +n09930876 +n09931640 +n09933098 +n09935434 +n09936892 +n09937056 +n09941964 +n09942970 +n09943239 +n09943811 +n09944160 +n09945319 +n09950457 +n09951070 +n09951274 +n09960688 +n09962966 +n09964411 +n09968845 +n09974648 +n09976728 +n09979321 +n09983572 +n09989502 +n09990415 +n09991867 +n09992538 +n09992837 +n09993252 +n09994673 +n09996481 +n09997622 +n10001217 +n10006748 +n10007684 +n10009484 +n10009671 +n10015215 +n10015897 +n10017422 +n10018861 +n10020890 +n10024362 +n10029068 +n10034201 +n10034614 +n10035952 +n10036266 +n10036929 +n10037385 +n10040945 +n10041887 +n10042690 +n10043643 +n10044879 +n10047459 +n10048367 +n10048836 +n10052694 +n10053808 +n10054657 +n10055730 +n10055847 +n10060175 +n10067968 +n10070711 +n10077593 +n10078131 +n10078806 +n10079399 +n10079893 +n10080869 +n10083823 +n10084043 +n10084295 +n10086383 +n10091651 +n10092488 +n10093475 +n10094584 +n10095869 +n10098710 +n10098862 +n10099375 +n10101634 +n10102800 +n10105085 +n10107303 +n10109662 +n10111903 +n10112129 +n10118844 +n10126177 +n10126424 +n10126708 +n10127689 +n10129825 +n10134396 +n10134982 +n10136959 +n10142747 +n10142946 +n10143172 +n10143725 +n10145340 +n10145774 +n10148305 +n10150071 +n10150940 +n10151570 +n10153594 +n10154186 +n10154601 +n10155849 +n10162194 +n10164233 +n10165448 +n10168183 +n10168584 +n10171567 +n10182190 +n10185793 +n10186774 +n10187130 +n10195593 +n10200781 +n10202624 +n10205457 +n10206173 +n10207169 +n10210137 +n10215623 +n10216106 +n10224578 +n10225219 +n10228278 +n10235385 +n10237069 +n10241300 +n10243664 +n10245639 +n10249270 +n10249459 +n10249950 +n10257221 +n10259348 +n10263411 +n10266328 +n10266848 +n10271677 +n10273064 +n10274815 +n10276045 +n10282672 +n10284064 +n10284965 +n10296444 +n10299250 +n10299700 +n10305635 +n10305802 +n10306004 +n10308732 +n10312287 +n10314054 +n10315561 +n10316360 +n10317007 +n10317500 +n10320863 +n10321340 +n10322238 +n10323999 +n10324560 +n10328437 +n10332385 +n10335246 +n10335931 +n10340312 +n10341573 +n10343554 +n10345100 +n10353016 +n10353355 +n10355142 +n10355449 +n10355688 +n10356450 +n10357613 +n10360747 +n10366966 +n10369528 +n10370381 +n10376523 +n10377021 +n10379376 +n10380672 +n10383816 +n10386984 +n10387196 +n10387324 +n10393909 +n10396106 +n10399130 +n10400998 +n10402824 +n10403876 +n10405694 +n10407954 +n10409752 +n10411551 +n10415037 +n10417551 +n10418101 +n10419047 +n10420031 +n10421016 +n10426454 +n10427764 +n10428004 +n10433737 +n10435716 +n10435988 +n10438172 +n10439851 +n10444194 +n10450303 +n10462860 +n10464052 +n10466918 +n10467179 +n10470779 +n10474064 +n10474645 +n10478960 +n10481268 +n10482054 +n10482921 +n10484858 +n10488309 +n10495421 +n10499355 +n10499857 +n10506544 +n10508710 +n10512372 +n10512708 +n10519494 +n10521100 +n10521662 +n10522035 +n10522324 +n10522759 +n10523341 +n10525134 +n10525436 +n10525617 +n10527334 +n10529231 +n10541833 +n10542888 +n10543161 +n10544232 +n10544748 +n10546633 +n10548537 +n10548681 +n10554846 +n10556518 +n10557854 +n10559288 +n10560637 +n10568200 +n10570019 +n10575787 +n10576962 +n10577284 +n10580535 +n10582746 +n10583387 +n10594147 +n10595164 +n10595647 +n10599806 +n10602985 +n10604634 +n10605253 +n10610465 +n10612210 +n10614629 +n10617193 +n10618685 +n10618848 +n10619642 +n10620758 +n10622053 +n10624074 +n10624310 +n10625860 +n10628644 +n10630188 +n10632576 +n10633450 +n10648237 +n10648696 +n10654932 +n10657835 +n10661002 +n10661563 +n10665698 +n10669991 +n10674130 +n10676018 +n10679174 +n10682953 +n10686073 +n10692883 +n10693824 +n10694258 +n10698368 +n10700201 +n10700640 +n10701180 +n10703336 +n10703692 +n10705615 +n10707233 +n10708454 +n10709529 +n10713686 +n10720453 +n10721321 +n10722575 +n10722965 +n10726786 +n10735298 +n10740868 +n10741152 +n10742997 +n10744164 +n10747119 +n10751265 +n10752480 +n10759151 +n10759982 +n10763383 +n10763620 +n10765679 +n10766260 +n10768903 +n10779610 +n10780632 +n10782791 +n10782940 +n10787470 +n10791221 +n10792335 +n10793570 +n10794014 +n11531193 +n11537327 +n11542640 +n11545524 +n11545714 +n11547562 +n11547855 +n11552386 +n11553240 +n11596108 +n11598686 +n11600372 +n11601177 +n11601918 +n11608250 +n11609475 +n11609684 +n11612923 +n11614250 +n11618861 +n11620673 +n11621029 +n11623105 +n11624531 +n11627168 +n11628456 +n11630017 +n11630489 +n11643835 +n11645914 +n11647306 +n11649878 +n11650558 +n11650759 +n11661372 +n11665372 +n11666854 +n11669921 +n11672400 +n11674332 +n11676500 +n11684264 +n11689483 +n11693981 +n11697560 +n11700864 +n11703669 +n11708658 +n11709674 +n11713164 +n11720353 +n11722982 +n11723770 +n11725015 +n11725623 +n11727091 +n11729478 +n11733054 +n11736694 +n11741350 +n11745817 +n11747468 +n11748002 +n11751765 +n11752578 +n11756092 +n11756669 +n11759224 +n11763625 +n11767354 +n11769621 +n11771539 +n11774513 +n11775340 +n11779300 +n11782036 +n11783920 +n11785668 +n11789438 +n11789962 +n11790788 +n11793779 +n11794519 +n11796005 +n11801392 +n11805956 +n11807108 +n11807979 +n11808721 +n11811473 +n11815491 +n11817914 +n11820965 +n11823043 +n11830714 +n11830906 +n11832214 +n11836722 +n11839568 +n11845557 +n11851578 +n11855274 +n11857696 +n11862835 +n11865071 +n11866248 +n11868814 +n11869351 +n11869689 +n11872146 +n11875691 +n11875938 +n11877473 +n11878283 +n11887119 +n11890022 +n11892637 +n11894327 +n11898639 +n11900569 +n11902709 +n11915214 +n11915658 +n11915899 +n11916467 +n11918286 +n11919447 +n11920498 +n11924445 +n11928352 +n11928858 +n11931918 +n11932745 +n11939699 +n11940006 +n11943407 +n11944196 +n11945367 +n11946727 +n11947251 +n11948264 +n11950345 +n11951511 +n11952346 +n11953884 +n11954484 +n11956850 +n11965627 +n11967744 +n11970101 +n11971248 +n11971783 +n11972759 +n11973341 +n11976170 +n11977303 +n11978233 +n11982115 +n11985053 +n11985739 +n11988893 +n11991263 +n11997032 +n11997969 +n12006766 +n12008252 +n12008749 +n12010628 +n12013511 +n12015959 +n12018760 +n12020507 +n12024176 +n12030654 +n12034141 +n12036067 +n12036939 +n12041446 +n12043444 +n12045860 +n12050959 +n12053405 +n12056217 +n12057447 +n12062468 +n12065316 +n12065777 +n12075151 +n12076577 +n12080395 +n12083591 +n12086012 +n12086539 +n12087961 +n12090890 +n12092262 +n12094244 +n12095020 +n12096395 +n12101870 +n12102133 +n12105125 +n12107970 +n12108432 +n12109827 +n12110778 +n12112008 +n12112918 +n12113657 +n12117017 +n12119099 +n12119238 +n12121033 +n12124627 +n12126360 +n12131550 +n12135898 +n12136720 +n12137120 +n12137569 +n12139575 +n12141495 +n12142085 +n12143676 +n12144313 +n12146311 +n12147226 +n12152532 +n12153580 +n12154773 +n12155583 +n12156819 +n12157056 +n12157769 +n12158031 +n12158798 +n12159055 +n12159555 +n12160490 +n12161285 +n12163035 +n12164363 +n12166424 +n12168565 +n12170585 +n12173664 +n12174311 +n12174926 +n12182049 +n12187663 +n12188289 +n12195391 +n12196129 +n12199266 +n12201580 +n12202936 +n12205694 +n12214789 +n12215579 +n12217453 +n12221191 +n12224978 +n12225349 +n12226932 +n12231192 +n12236546 +n12237486 +n12244153 +n12245695 +n12246232 +n12252168 +n12252866 +n12253229 +n12256112 +n12257570 +n12260799 +n12262553 +n12265394 +n12266217 +n12266796 +n12268246 +n12269241 +n12269652 +n12271643 +n12274630 +n12275489 +n12281241 +n12284262 +n12286826 +n12287642 +n12288823 +n12290748 +n12293723 +n12296432 +n12300840 +n12302071 +n12303462 +n12305475 +n12306717 +n12307756 +n12310349 +n12316444 +n12318378 +n12320010 +n12322501 +n12328398 +n12330469 +n12334293 +n12334891 +n12335483 +n12335664 +n12335800 +n12340383 +n12341542 +n12342299 +n12343480 +n12344283 +n12346578 +n12350758 +n12352287 +n12355760 +n12360108 +n12360684 +n12364604 +n12367611 +n12374418 +n12377198 +n12381511 +n12385429 +n12387633 +n12387839 +n12392070 +n12396924 +n12399132 +n12401335 +n12401684 +n12405714 +n12409231 +n12411461 +n12412355 +n12412606 +n12416423 +n12419037 +n12420535 +n12421467 +n12421683 +n12425281 +n12430198 +n12431434 +n12437513 +n12437769 +n12441958 +n12446200 +n12446519 +n12449296 +n12450344 +n12451915 +n12454159 +n12459629 +n12460697 +n12461466 +n12462032 +n12463743 +n12464476 +n12466727 +n12470092 +n12474167 +n12475035 +n12476510 +n12480895 +n12491826 +n12495146 +n12499163 +n12506181 +n12508309 +n12509476 +n12511856 +n12516584 +n12522188 +n12524188 +n12526516 +n12527738 +n12539074 +n12539306 +n12546183 +n12548280 +n12550210 +n12554526 +n12556656 +n12560282 +n12560775 +n12562577 +n12572546 +n12573256 +n12575322 +n12582231 +n12582665 +n12582846 +n12583126 +n12583401 +n12584191 +n12586298 +n12590232 +n12594989 +n12595964 +n12602262 +n12602980 +n12612170 +n12614477 +n12615710 +n12620196 +n12622875 +n12624381 +n12625383 +n12631331 +n12633638 +n12634211 +n12634429 +n12635744 +n12636885 +n12638218 +n12638556 +n12639736 +n12640607 +n12641413 +n12641931 +n12642200 +n12643473 +n12644902 +n12645174 +n12647376 +n12649065 +n12650556 +n12651821 +n12653218 +n12655869 +n12658118 +n12658846 +n12659356 +n12660601 +n12662772 +n12663804 +n12665048 +n12667406 +n12667964 +n12674120 +n12674685 +n12682411 +n12683407 +n12685431 +n12685831 +n12688716 +n12690653 +n12695144 +n12698435 +n12705013 +n12707781 +n12708293 +n12709901 +n12711596 +n12713063 +n12714755 +n12715914 +n12717072 +n12719684 +n12724942 +n12725521 +n12727301 +n12731401 +n12732491 +n12732756 +n12733647 +n12741222 +n12742741 +n12743823 +n12746884 +n12749049 +n12752205 +n12755225 +n12756457 +n12762896 +n12768369 +n12771192 +n12772753 +n12777436 +n12778605 +n12779603 +n12785724 +n12791064 +n12793015 +n12794985 +n12798284 +n12800586 +n12801520 +n12805146 +n12806732 +n12810595 +n12812235 +n12814643 +n12817464 +n12822769 +n12823717 +n12823859 +n12832315 +n12833985 +n12834798 +n12836212 +n12836862 +n12839979 +n12840749 +n12842302 +n12842887 +n12844939 +n12849061 +n12853080 +n12854048 +n12858150 +n12866968 +n12869478 +n12870535 +n12871272 +n12877244 +n12878169 +n12879963 +n12882779 +n12884260 +n12890265 +n12893463 +n12903367 +n12904938 +n12908645 +n12909421 +n12912670 +n12917901 +n12922763 +n12926480 +n12928071 +n12929403 +n12930778 +n12931906 +n12934036 +n12934479 +n12939104 +n12941536 +n12942395 +n12943443 +n12946849 +n12950126 +n12952165 +n12953206 +n12956170 +n12957608 +n12960378 +n12960863 +n12965626 +n12968136 +n12969131 +n12970193 +n12971400 +n12973791 +n12974987 +n12976198 +n12980840 +n12982468 +n12983961 +n12985773 +n12987056 +n12988158 +n12992868 +n12997654 +n12997919 +n13000891 +n13001041 +n13001206 +n13001366 +n13001529 +n13002750 +n13002925 +n13003061 +n13003254 +n13003522 +n13003712 +n13004423 +n13004640 +n13004826 +n13004992 +n13005329 +n13005984 +n13006171 +n13006631 +n13006894 +n13007417 +n13007629 +n13008157 +n13008315 +n13008485 +n13008689 +n13008839 +n13009085 +n13009244 +n13009429 +n13009656 +n13010694 +n13010951 +n13011221 +n13012253 +n13012469 +n13012973 +n13013534 +n13013764 +n13013965 +n13014097 +n13014265 +n13014409 +n13014581 +n13014741 +n13014879 +n13017102 +n13017240 +n13017439 +n13017610 +n13017789 +n13017979 +n13018088 +n13018232 +n13018407 +n13019496 +n13019643 +n13019835 +n13020191 +n13020481 +n13020964 +n13021166 +n13021332 +n13021543 +n13021689 +n13021867 +n13022210 +n13022709 +n13024012 +n13024500 +n13025647 +n13028611 +n13032115 +n13032923 +n13035241 +n13035389 +n13035707 +n13037585 +n13037805 +n13038068 +n13038376 +n13038744 +n13039349 +n13040629 +n13040796 +n13041312 +n13042982 +n13043926 +n13045210 +n13045975 +n13046130 +n13049953 +n13055423 +n13055577 +n13055792 +n13055949 +n13056135 +n13056349 +n13056607 +n13056799 +n13057054 +n13057242 +n13057422 +n13057639 +n13058037 +n13058272 +n13058608 +n13059298 +n13059657 +n13060017 +n13060190 +n13063269 +n13066129 +n13067191 +n13068917 +n13070308 +n13070875 +n13071371 +n13071553 +n13071815 +n13072031 +n13072209 +n13072350 +n13072528 +n13072706 +n13072863 +n13073055 +n13073703 +n13074619 +n13074814 +n13075020 +n13075272 +n13075441 +n13075684 +n13075847 +n13076041 +n13076405 +n13076643 +n13076831 +n13077033 +n13077295 +n13079419 +n13083023 +n13084184 +n13085113 +n13091620 +n13091774 +n13100156 +n13100677 +n13104059 +n13108131 +n13108662 +n13108841 +n13109733 +n13110915 +n13111174 +n13111881 +n13118707 +n13119870 +n13120211 +n13121104 +n13122364 +n13123431 +n13125117 +n13130161 +n13130726 +n13132034 +n13132338 +n13132486 +n13132940 +n13134302 +n13134947 +n13135832 +n13136316 +n13136556 +n13137409 +n13137672 +n13138308 +n13138658 +n13138842 +n13139055 +n13139647 +n13141141 +n13145444 +n13149296 +n13150894 +n13154841 +n13156986 +n13157137 +n13160831 +n13163991 +n13172923 +n13174670 +n13177529 +n13180534 +n13186388 +n13188096 +n13188268 +n13192625 +n13193642 +n13194572 +n13195761 +n13199970 +n13201969 +n13206817 +n13207736 +n13208705 +n13211790 +n13219422 +n13221529 +n13224673 +n13230662 +n13231678 +n13231919 +n13232106 +n13232363 +n13232779 +n13233727 +n13238375 +n13238988 +n13252672 +n13862780 +n13863186 +n13863473 +n13863771 +n13864153 +n13864965 +n13865298 +n13865483 +n13866144 +n13866827 +n13867492 +n13868248 +n13868371 +n13872592 +n13873502 +n13875392 +n13875571 +n13878306 +n13879320 +n13883603 +n13888491 +n13893786 +n13894434 +n13896100 +n13897996 +n13900287 +n13903079 +n13905121 +n13905275 +n13905792 +n13912260 +n13915999 +n14633206 +n14696793 +n14844693 +n14853210 +n14899328 +n14900184 +n14974264 +n14977504 +n14992287 +n15062057 +n15067877 +n15089258 +n15089472 +n15089645 +n15089803 +n15090742 +n15092409 +n15092751 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/imagenet.shortnames.list" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/imagenet.shortnames.list" new file mode 100644 index 00000000..e9600eb5 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/imagenet.shortnames.list" @@ -0,0 +1,21842 @@ +kit fox +English setter +Siberian husky +Australian terrier +English springer +grey whale +lesser panda +Egyptian cat +ibex +Persian cat +cougar +gazelle +porcupine +sea lion +malamute +badger +Great Dane +Walker hound +Welsh springer spaniel +whippet +Scottish deerhound +killer whale +mink +African elephant +Weimaraner +soft-coated wheaten terrier +Dandie Dinmont +red wolf +Old English sheepdog +jaguar +otterhound +bloodhound +Airedale +hyena +meerkat +giant schnauzer +titi +three-toed sloth +sorrel +black-footed ferret +dalmatian +black-and-tan coonhound +papillon +skunk +Staffordshire bullterrier +Mexican hairless +Bouvier des Flandres +weasel +miniature poodle +Cardigan +malinois +bighorn +fox squirrel +colobus +tiger cat +Lhasa +impala +coyote +Yorkshire terrier +Newfoundland +brown bear +red fox +Norwegian elkhound +Rottweiler +hartebeest +Saluki +grey fox +schipperke +Pekinese +Brabancon griffon +West Highland white terrier +Sealyham terrier +guenon +mongoose +indri +tiger +Irish wolfhound +wild boar +EntleBucher +zebra +ram +French bulldog +orangutan +basenji +leopard +Bernese mountain dog +Maltese dog +Norfolk terrier +toy terrier +vizsla +cairn +squirrel monkey +groenendael +clumber +Siamese cat +chimpanzee +komondor +Afghan hound +Japanese spaniel +proboscis monkey +guinea pig +white wolf +ice bear +gorilla +borzoi +toy poodle +Kerry blue terrier +ox +Scotch terrier +Tibetan mastiff +spider monkey +Doberman +Boston bull +Greater Swiss Mountain dog +Appenzeller +Shih-Tzu +Irish water spaniel +Pomeranian +Bedlington terrier +warthog +Arabian camel +siamang +miniature schnauzer +collie +golden retriever +Irish terrier +affenpinscher +Border collie +hare +boxer +silky terrier +beagle +Leonberg +German short-haired pointer +patas +dhole +baboon +macaque +Chesapeake Bay retriever +bull mastiff +kuvasz +capuchin +pug +curly-coated retriever +Norwich terrier +flat-coated retriever +hog +keeshond +Eskimo dog +Brittany spaniel +standard poodle +Lakeland terrier +snow leopard +Gordon setter +dingo +standard schnauzer +hamster +Tibetan terrier +Arctic fox +wire-haired fox terrier +basset +water buffalo +American black bear +Angora +bison +howler monkey +hippopotamus +chow +giant panda +American Staffordshire terrier +Shetland sheepdog +Great Pyrenees +Chihuahua +tabby +marmoset +Labrador retriever +Saint Bernard +armadillo +Samoyed +bluetick +redbone +polecat +marmot +kelpie +gibbon +llama +miniature pinscher +wood rabbit +Italian greyhound +lion +cocker spaniel +Irish setter +dugong +Indian elephant +beaver +Sussex spaniel +Pembroke +Blenheim spaniel +Madagascar cat +Rhodesian ridgeback +lynx +African hunting dog +langur +Ibizan hound +timber wolf +cheetah +English foxhound +briard +sloth bear +Border terrier +German shepherd +otter +koala +tusker +echidna +wallaby +platypus +wombat +revolver +umbrella +schooner +soccer ball +accordion +ant +starfish +chambered nautilus +grand piano +laptop +strawberry +airliner +warplane +airship +balloon +space shuttle +fireboat +gondola +speedboat +lifeboat +canoe +yawl +catamaran +trimaran +container ship +liner +pirate +aircraft carrier +submarine +wreck +half track +tank +missile +bobsled +dogsled +bicycle-built-for-two +mountain bike +freight car +passenger car +barrow +shopping cart +motor scooter +forklift +electric locomotive +steam locomotive +amphibian +ambulance +beach wagon +cab +convertible +jeep +limousine +minivan +Model T +racer +sports car +go-kart +golfcart +moped +snowplow +fire engine +garbage truck +pickup +tow truck +trailer truck +moving van +police van +recreational vehicle +streetcar +snowmobile +tractor +mobile home +tricycle +unicycle +horse cart +jinrikisha +oxcart +bassinet +cradle +crib +four-poster +bookcase +china cabinet +medicine chest +chiffonier +table lamp +file +park bench +barber chair +throne +folding chair +rocking chair +studio couch +toilet seat +desk +pool table +dining table +entertainment center +wardrobe +Granny Smith +orange +lemon +fig +pineapple +banana +jackfruit +custard apple +pomegranate +acorn +hip +ear +rapeseed +corn +buckeye +organ +upright +chime +drum +gong +maraca +marimba +steel drum +banjo +cello +violin +harp +acoustic guitar +electric guitar +cornet +French horn +trombone +harmonica +ocarina +panpipe +bassoon +oboe +sax +flute +daisy +yellow lady's slipper +cliff +valley +alp +volcano +promontory +sandbar +coral reef +lakeside +seashore +geyser +hatchet +cleaver +letter opener +plane +power drill +lawn mower +hammer +corkscrew +can opener +plunger +screwdriver +shovel +plow +chain saw +cock +hen +ostrich +brambling +goldfinch +house finch +junco +indigo bunting +robin +bulbul +jay +magpie +chickadee +water ouzel +kite +bald eagle +vulture +great grey owl +black grouse +ptarmigan +ruffed grouse +prairie chicken +peacock +quail +partridge +African grey +macaw +sulphur-crested cockatoo +lorikeet +coucal +bee eater +hornbill +hummingbird +jacamar +toucan +drake +red-breasted merganser +goose +black swan +white stork +black stork +spoonbill +flamingo +American egret +little blue heron +bittern +crane +limpkin +American coot +bustard +ruddy turnstone +red-backed sandpiper +redshank +dowitcher +oystercatcher +European gallinule +pelican +king penguin +albatross +great white shark +tiger shark +hammerhead +electric ray +stingray +barracouta +coho +tench +goldfish +eel +rock beauty +anemone fish +lionfish +puffer +sturgeon +gar +loggerhead +leatherback turtle +mud turtle +terrapin +box turtle +banded gecko +common iguana +American chameleon +whiptail +agama +frilled lizard +alligator lizard +Gila monster +green lizard +African chameleon +Komodo dragon +triceratops +African crocodile +American alligator +thunder snake +ringneck snake +hognose snake +green snake +king snake +garter snake +water snake +vine snake +night snake +boa constrictor +rock python +Indian cobra +green mamba +sea snake +horned viper +diamondback +sidewinder +European fire salamander +common newt +eft +spotted salamander +axolotl +bullfrog +tree frog +tailed frog +whistle +wing +paintbrush +hand blower +oxygen mask +snorkel +loudspeaker +microphone +screen +mouse +electric fan +oil filter +strainer +space heater +stove +guillotine +barometer +rule +odometer +scale +analog clock +digital clock +wall clock +hourglass +sundial +parking meter +stopwatch +digital watch +stethoscope +syringe +magnetic compass +binoculars +projector +sunglasses +loupe +radio telescope +bow +cannon +assault rifle +rifle +projectile +computer keyboard +typewriter keyboard +crane +lighter +abacus +cash machine +slide rule +desktop computer +hand-held computer +notebook +web site +harvester +thresher +printer +slot +vending machine +sewing machine +joystick +switch +hook +car wheel +paddlewheel +pinwheel +potter's wheel +gas pump +carousel +swing +reel +radiator +puck +hard disc +sunglass +pick +car mirror +solar dish +remote control +disk brake +buckle +hair slide +knot +combination lock +padlock +nail +safety pin +screw +muzzle +seat belt +ski +candle +jack-o'-lantern +spotlight +torch +neck brace +pier +tripod +maypole +mousetrap +spider web +trilobite +harvestman +scorpion +black and gold garden spider +barn spider +garden spider +black widow +tarantula +wolf spider +tick +centipede +isopod +Dungeness crab +rock crab +fiddler crab +king crab +American lobster +spiny lobster +crayfish +hermit crab +tiger beetle +ladybug +ground beetle +long-horned beetle +leaf beetle +dung beetle +rhinoceros beetle +weevil +fly +bee +grasshopper +cricket +walking stick +cockroach +mantis +cicada +leafhopper +lacewing +dragonfly +damselfly +admiral +ringlet +monarch +cabbage butterfly +sulphur butterfly +lycaenid +jellyfish +sea anemone +brain coral +flatworm +nematode +conch +snail +slug +sea slug +chiton +sea urchin +sea cucumber +iron +espresso maker +microwave +Dutch oven +rotisserie +toaster +waffle iron +vacuum +dishwasher +refrigerator +washer +Crock Pot +frying pan +wok +caldron +coffeepot +teapot +spatula +altar +triumphal arch +patio +steel arch bridge +suspension bridge +viaduct +barn +greenhouse +palace +monastery +library +apiary +boathouse +church +mosque +stupa +planetarium +restaurant +cinema +home theater +lumbermill +coil +obelisk +totem pole +castle +prison +grocery store +bakery +barbershop +bookshop +butcher shop +confectionery +shoe shop +tobacco shop +toyshop +fountain +cliff dwelling +yurt +dock +brass +megalith +bannister +breakwater +dam +chainlink fence +picket fence +worm fence +stone wall +grille +sliding door +turnstile +mountain tent +scoreboard +honeycomb +plate rack +pedestal +beacon +mashed potato +bell pepper +head cabbage +broccoli +cauliflower +zucchini +spaghetti squash +acorn squash +butternut squash +cucumber +artichoke +cardoon +mushroom +shower curtain +jean +carton +handkerchief +sandal +ashcan +safe +plate +necklace +croquet ball +fur coat +thimble +pajama +running shoe +cocktail shaker +chest +manhole cover +modem +tub +tray +balance beam +bagel +prayer rug +kimono +hot pot +whiskey jug +knee pad +book jacket +spindle +ski mask +beer bottle +crash helmet +bottlecap +tile roof +mask +maillot +Petri dish +football helmet +bathing cap +teddy +holster +pop bottle +photocopier +vestment +crossword puzzle +golf ball +trifle +suit +water tower +feather boa +cloak +red wine +drumstick +shield +Christmas stocking +hoopskirt +menu +stage +bonnet +meat loaf +baseball +face powder +scabbard +sunscreen +beer glass +hen-of-the-woods +guacamole +lampshade +wool +hay +bow tie +mailbag +water jug +bucket +dishrag +soup bowl +eggnog +mortar +trench coat +paddle +chain +swab +mixing bowl +potpie +wine bottle +shoji +bulletproof vest +drilling platform +binder +cardigan +sweatshirt +pot +birdhouse +hamper +ping-pong ball +pencil box +pay-phone +consomme +apron +punching bag +backpack +groom +bearskin +pencil sharpener +broom +mosquito net +abaya +mortarboard +poncho +crutch +Polaroid camera +space bar +cup +racket +traffic light +quill +radio +dough +cuirass +military uniform +lipstick +shower cap +monitor +oscilloscope +mitten +brassiere +French loaf +vase +milk can +rugby ball +paper towel +earthstar +envelope +miniskirt +cowboy hat +trolleybus +perfume +bathtub +hotdog +coral fungus +bullet train +pillow +toilet tissue +cassette +carpenter's kit +ladle +stinkhorn +lotion +hair spray +academic gown +dome +crate +wig +burrito +pill bottle +chain mail +theater curtain +window shade +barrel +washbasin +ballpoint +basketball +bath towel +cowboy boot +gown +window screen +agaric +cellular telephone +nipple +barbell +mailbox +lab coat +fire screen +minibus +packet +maze +pole +horizontal bar +sombrero +pickelhaube +rain barrel +wallet +cassette player +comic book +piggy bank +street sign +bell cote +fountain pen +Windsor tie +volleyball +overskirt +sarong +purse +bolo tie +bib +parachute +sleeping bag +television +swimming trunks +measuring cup +espresso +pizza +breastplate +shopping basket +wooden spoon +saltshaker +chocolate sauce +ballplayer +goblet +gyromitra +stretcher +water bottle +dial telephone +soap dispenser +jersey +school bus +jigsaw puzzle +plastic bag +reflex camera +diaper +Band Aid +ice lolly +velvet +tennis ball +gasmask +doormat +Loafer +ice cream +pretzel +quilt +maillot +tape player +clog +iPod +bolete +scuba diver +pitcher +matchstick +bikini +sock +CD player +lens cap +thatch +vault +beaker +bubble +cheeseburger +parallel bars +flagpole +coffee mug +rubber eraser +stole +carbonara +dumbbell +singles +Virginia deer +eastern grey squirrel +gelding +pylon +table-tennis table +peacock +Segway +surfing +tamandua +knocker +steering wheel +motorcycling +coati +sitar +range +backhoe +agaric +dashboard +water polo +concrete mixer +treadmill +golf bag +skateboarding +royal tennis +tartan +four-wheel drive +sport utility +sedan +print +luggage rack +softball +windmill +ben +red admiral +jalousie +towel rail +truss +strand +ice hockey +sconce +wind turbine +plush +stained-glass window +ballpark +thoroughbred +love seat +red-spotted purple +miller +Adelie +freight liner +clock tower +acrobatics +shaving brush +ewe +ottoman +African violet +bicycle wheel +cork +windmill +satin +comma +coffee mill +baggage +wasp's nest +batting glove +Ferris wheel +push-bike +porthole +football stadium +gas tank +barbecue +handlebar +hula-hoop +fairground +rapier +garter stitch +exercise bike +control tower +carryall +minute hand +cog +riverbank +water nymph +common dandelion +android +hairbrush +redberry +fret +display window +pepper mill +litterbin +drapery +ducking +fly-fishing +broad jump +sprinkler +water-skiing +chicory +sail +volleyball +rugby +Texas bluebonnet +computer monitor +tortoiseshell +airplane propeller +solar array +figure skating +air conditioner +purple loosestrife +gearshift +outboard motor +cowslip +Abyssinian +dip +workstation +cosy +bunker +neon lamp +campanile +casket +verbena +amphora +sumo +common foxglove +sprocket +jelly bean +emperor penguin +night-blooming cereus +clock radio +black birch +bomber jacket +Virginia bluebell +bayonet +walker +altarpiece +tattoo +bridle +rocker arm +water turkey +spiderwort +flange +mute swan +laser printer +carburetor +coverlet +mountainside +baritone +auto racing +baluster +gal +peach bells +taffeta +grandfather +asparagus +horizontal stabilizer +world +grate +marsh marigold +white rhinoceros +movement +split rail +rollerblading +longhorn +muffler +church tower +light bulb +American agave +backpacking tent +overall +New World goldfinch +sectional +wing chair +transom +integrated circuit +dad +spar +picture frame +no-hit game +alternator +drill press +strawflower +hepatica +rangefinder +blinker +Welsh pony +nib +wagon wheel +rotor +tie +denim +jetliner +sculling +external drive +window frame +mourning dove +censer +stapler +batting helmet +flagon +machete +windshield +hedgehog +weeping willow +chief executive officer +hepatica +pet +Asiatic black bear +chinchilla +uke +Atlantic bottlenose dolphin +hair +dishtowel +flintlock +Bermuda shorts +lavender +searchlight +millwheel +piano keyboard +luna moth +bumper +parrot +skirt +manhole +coffee table +footstool +judo +Dalai Lama +armored personnel carrier +voile +saber +thoroughbred +wild carrot +gemsbok +caster +butterfly orchid +cow +sideboard +horseshoe crab +match play +cassette recorder +photomicrograph +drafting table +pediment +tramline +shipping +kitten +wainscoting +fried rice +helix +marguerite +pumpkin +white-bellied swallow +Tulipa gesneriana +common dolphin +face +red squirrel +bicycling +shipwreck +banded purple +cornice +pendant earring +forsythia +aardvark +seashell +spat +shoulder bag +fallow deer +yearling +common teasel +tufted titmouse +ancient +professional golf +purl +vehicle +okra +great grandmother +common lilac +rose mallow +newspaper +crucifix +chukka +armlet +fulmar +wapiti +doily +Greco-Roman wrestling +bleeding heart +kitchen table +bluebonnet +Cape buffalo +spun yarn +crape myrtle +dewdrop +great blue heron +medalist +vaulting horse +spinning wheel +skyscraper +Tahitian +forget-me-not +watercourse +guitarist +gargoyle +bee balm +pumpkin +hunting knife +flutist +lectern +skateboarder +foil +pant leg +hedge sparrow +dresser +automatic pistol +chicory +dialog box +chamberpot +black rhinoceros +fireweed +half-mast +pillow sham +pavilion +scarf joint +microprocessor +filly +dressing gown +shell +Arabian +child +radio antenna +butterweed +morris dancer +sparrow hawk +groom +brioche +floret +rainbow +earthworm +cellist +tine +toupee +balldress +map +angel's trumpet +ruin +fur +pronghorn +speed skating +used-car +stick +early spider orchid +stuffed peppers +snowdrift +flats +least sandpiper +stick +console table +ventilator +portable +kepi +pylon +viceroy +shoreline +Olympian Zeus +pestle +great-niece +life +air compressor +fanjet +scuba diving +fieldfare +tree swallow +personnel carrier +night-blooming cereus +sonogram +assembly hall +circuit breaker +chair +speed skate +soapwort +worsted +raspberry +burlap +flat panel display +Pyracantha +cemetery +turban +deer hunting +bottle green +dandelion green +pieta +aigrette +turntable +cover girl +clutch bag +kiwi +pea jacket +color guard +Malay +shire +crock +french fries +credenza +hockey stick +mourning cloak +potty seat +glass +balsamroot +medal play +red clover +gravy boat +garter belt +Guinness +meadow buttercup +jackass penguin +coursing +tooth +hawfinch +housetop +fluorescent lamp +black-backed gull +bookshelf +earplug +millipede +fawn +baseball bat +soup-strainer +organ loft +bugloss +tomahawk +blackcap +black-necked stilt +hand truck +bedstead +tempura +rose window +crimson +snow thrower +lesser whitethroat +palomino +ball +staff sergeant +wicker +garbage heap +great-nephew +parquet +coupe +nave +eggs Benedict +damask +flush toilet +Angora +pedometer +control room +bristle brush +kookaburra +telephone booth +Windsor chair +red-winged blackbird +cinnamon roll +briefs +cloister +sundress +mammillaria +unicyclist +covered bridge +coelogyne +fairy bluebird +phoebe +beer mug +headstock +parhelion +gorse +common European dogwood +fire-eater +professional football +rock climbing +cyclamen +tin +marjoram +Japanese morning glory +pipe +smasher +hang glider +abutment +birdbath +jotter +litter +artist's model +butterfly bush +dining area +sausage dog +piggery +English sparrow +Turk's-cap +platinum blond +song sparrow +alarm clock +tortoiseshell +chaise longue +flintlock +academic costume +graffito +Arnica montana +adding machine +waterside +director +jonquil +pipefitting +stud +Swedish meatball +musk rose +Venus's flytrap +raven +bougainvillea +little brother +field bindweed +finder +white admiral +tinfoil +serval +sheet +carthorse +people +potto +stockroom +sphinx +slate roof +mountain laurel +majolica +coal black +repository +bufo +pique +binder +tread +attorney general +hydraulic press +videocassette recorder +bumper car +professional baseball +cow parsley +ern +blue peafowl +common hyacinth +jack-in-the-pulpit +ice hockey rink +sport +camper +tailback +flash +stacks +pulp +Christmas cactus +netball +calliandra +curler +large periwinkle +cobweb +forward +Roman arch +cross bun +stoneware +banana bread +cape jasmine +settle +tongue +frock +pepper shaker +pitching coach +CD-R +casing +faience +hand cream +CD-ROM +recliner +striped bass +clary +sketch +risotto +reticle +white clover +touch football +kitty +great-aunt +Japanese maple +sidecar +muscovy duck +hack +rope bridge +organist +stinging nettle +pocket watch +Indian pipe +amorphophallus +bird's-foot violet +caller ID +furnishing +carriageway +dish rack +heiress +nail polish +beldam +Dall sheep +teriyaki +stateroom +laughing gull +chow +bookmark +timer +toga virilis +deviled egg +coltsfoot +Papuan +native +cygnet +automation +portfolio +cabbage palm +cube +broiler +radish +broodmare +castor-oil plant +pith hat +talus +lass +thatch +common marigold +young buck +igloo +prairie rattlesnake +soccer player +spoke +place +slide fastener +tapestry +toy +headboard +cross-country skiing +harness +sconce +rim +ballet skirt +transvestite +saddlebag +common evening primrose +taillight +challah +willet +ready-to-wear +cloud +answering machine +waterfront +vane +granddaughter +Chinese gooseberry +tureen +cab +truffle +viola +bootlace +chemise +taro +petal +candied apple +soccer +miniature golf +front porch +asparagus +Sauvignon blanc +daisy fleabane +ceiling +slip-on +bottle-nosed whale +redbud +black squirrel +snowsuit +ribbing +gravestone +creme brulee +ambassador +local +archery +love-in-a-mist +garbage +thyme +night-blooming cereus +goshawk +cuckoopint +azure +German iris +salad bowl +puppy +cockhorse +giant clam +biplane +stele +necklet +sea otter +crest +door +reformer +comforter +Byelorussian +bottle +hemline +book bag +leotard +owlet +spoon +sari +bidet +Latin +reticulated python +bowling shoe +futon +gaiter +coypu +tea urn +waders +bangle +snowbank +pencil +porter +azalea +English lavender +red spruce +team sport +cruet +high-rise +O ring +vodka +cormorant +Canada thistle +clasp +showjumping +rattan +red fox +sun parlor +Charolais +Tommy gun +bird's foot trefoil +sedge warbler +knot +chives +car tire +steam engine +adapter +spirea +common allamanda +oyster shell +harbor seal +baobab +wick +plumbago +downy woodpecker +coconut +leash +kasbah +hour hand +upholstery +mallard +cricket bat +lady +kitchenware +right-hander +leopard +olive green +common valerian +blue whale +blackboard +redhead +periwinkle +fingerboard +hard hat +locker +breakfast table +capybara +beekeeper +harness +feeder +water hyacinth +hexapod +brown thrasher +percale +lever +patriarch +arete +book +book +senator +bunya bunya +couch +durian +common lady's-slipper +mountain ash +golden barrel cactus +bicycle seat +beret +pop +musk mallow +manatee +cotton candy +boxing glove +backboard +tongue +saguaro +playground +capitol +sanderling +wagtail +deputy +tractor +tap +lady's smock +noseband +worsted +radiotelephone +camisole +forelock +muscat +sweet scabious +crane fly +butterfly weed +chestnut +pinata +inositol +borage +aquatic +belly +broadcaster +gondolier +egg yolk +blush wine +bufflehead +rambutan +oleander +horse-trail +sea holly +yard bird +conference room +lacrosse +belted kingfisher +defile +extremum +whistle +bear cub +grainfield +potage +watermelon +lasagna +sheik +Cooper's hawk +bulb +basketball court +paella +cassette tape +scatter rug +kid +impala lily +Minnesotan +Sudanese +chocolate +tail +quack-quack +whistling swan +shoulder patch +frozen custard +sumo wrestler +smoothie +bock +meat grinder +latch +palisade +radial +sake +kestrel +corn chowder +airframe +electrician +reamer +metropolitan +cotton flannel +cassowary +crossbill +operating room +winter aconite +flute +Tasmanian devil +billboard +suds +kilt +aperitif +cooling tower +avocado +hooded merganser +coleslaw +bee balm +ladder-back +insurance broker +scaffolding +polo mallet +double bed +two-hitter +bluff +gamboge +baby +lawn chair +frond +pistol grip +fancy dress +marquetry +jambalaya +fireweed +Eurasian kingfisher +cue ball +ice plant +horseweed +rose moss +musher +sun +viscount +white-breasted nuthatch +gin and tonic +thermos +Kenyan +first-aid kit +four-wheeler +tourist +stairwell +Gambian +liqueur glass +hovercraft +cocktail dress +twin +coriander +blister pack +Barrow's goldeneye +canteen +irrigation ditch +great white heron +tree sparrow +canal boat +lens +food processor +common raccoon +Baltimore oriole +black-eyed Susan +bush hibiscus +corolla +sire +mustachio +professional wrestling +elk +clustered bellflower +pannier +musk ox +crapaud +animal trainer +rosebud +ring-necked pheasant +little egret +cappuccino +rocker +bristlecone pine +cheerleader +hedge violet +semaphore +central processing unit +speedskater +delivery truck +assembly +hedgehog cactus +bergenia +bull thistle +bladder campion +cinquefoil +inula +cellulose tape +main rotor +bootee +autogiro +ice +grey +meadow cranesbill +hummus +valise +chassis +mountain goat +blacktail prairie dog +Chardonnay +romper +street +shoveler +wood ibis +topiary +chalice +silo +circus acrobat +Rollerblade +cosmos +woof +heroine +cold cream +marabou +herb robert +garden lettuce +nymph +floor lamp +automobile engine +heel +radiator +seeded player +fedora +father-in-law +peahen +Bahamian +wiper +wood pigeon +barn owl +pegboard +chorus frog +kin +roller skate +stob +rosemary +cowbird +hortensia +cranberry sauce +shot glass +Dixie cup +gnu +fire alarm +diet +booster +oxeye daisy +twayblade +high-definition television +truss bridge +bunk bed +mule +blackbuck +facsimile +frog orchid +point-and-shoot camera +brocade +gazebo +prairie gentian +concert +paintball +Cognac +maid +afghan +barbecued spareribs +pintail +tramway +commissioner +finger-painting +beef stew +caftan +Aberdeen Angus +demonstrator +sea trout +pigtail +thrush nightingale +barbados cherry +sashimi +ridgeling +lamppost +gabardine +red-shouldered hawk +bath salts +cavern +cymbid +Haitian +boater +southern buckthorn +arctic +motorcycle cop +red gum +Clydesdale +Zamboni +beagling +villa +demitasse +Sheetrock +lollipop +hybrid petunia +post horse +carabiner +brussels sprouts +Durham +stylist +pothole +sleigh bed +scallop shell +harrier eagle +papaya +Japanese persimmon +sachet +wild rice +chipboard +gun enclosure +menorah +chinook +headset +white campion +ocean +Secretary of State +G-string +bone china +basil +greenish blue +camcorder +concrete +screech owl +trumpet honeysuckle +flugelhorn +layette +cattle egret +case knife +mandarin duck +robber fly +salwar +dressing table +doughnut +facade +runner +honeypot +surf casting +diver +angel's trumpet +spin dryer +chameleon +wand +snow +vitamin A1 +manageress +volleyball net +antiperspirant +street clothes +tree sparrow +cords +sundew +bricks and mortar +caryatid +bridesmaid +trestle bridge +eyepiece +celebrant +scarlet pimpernel +gas range +onion +green salad +squill +creepy-crawly +hunk +little owl +salad nicoise +earflap +bird feeder +spray gun +bunny +Cheops +amazon +blue tit +Nissen hut +Kalashnikov +skylark +kremlin +shoebill +shopping bag +frigate bird +telephoto lens +peplum +moss pink +echidna +wastepaper basket +wood ibis +workroom +ankle brace +telpherage +Michaelmas daisy +figure skate +swami +nylons +cardoon +cocotte +headstall +twin bed +parsley +dirndl +corn poppy +nut bread +cloche +light heavyweight +mayor +lip-gloss +punch bowl +pottage +mango +fledgling +mousse +four-wheel drive +barrel +banana boat +trouser +bathroom +Sauterne +ring +settee +lavaliere +safe-deposit +godson +leatherette +schoolmate +radish +hedge trimmer +dahlia +euphonium +palace +vaulter +singlet +slicer +Pilsner +cockateel +kangaroo paw +Cub Scout +master bedroom +hexagon +cenotaph +Barberton daisy +Netherlander +intersection +Korean +gravel +chandelier +hospital bed +flash memory +pier +whole wheat flour +maroon +pale ale +special +snow bunting +crinoline +dustpan +barrette +common wood sorrel +yolk +pothos +speakerphone +tendril +cabinetwork +farm horse +brake disk +streetlight +superhighway +bandsaw +panting +pressure cooker +girdle +old man +cereal bowl +felt +hurling +architecture +harmonium +chain +blueberry +cellar +smocking +scrub brush +tablespoon +sweet corn +graining +library +street +bill +felt-tip pen +monkshood +crowd +log cabin +newel post +hack +elephant seal +golden pothos +popcorn +outhouse +patch pocket +fish and chips +tape +wax plant +eaves +fried egg +emerald +tea cart +fan blade +daily +Bowie knife +rowing boat +leaf shape +man +crayon +trumpetfish +chipping sparrow +whiskey bottle +pillion +city hall +golden pheasant +cheerleader +creeping bugle +couch +Dumpster +Homo sapiens sapiens +cranberry juice +cockpit +demagogue +joinery +scrambled eggs +technician +sidewalk +sheep +keyhole +power line +polyanthus +roulette +first lieutenant +checkout +tabletop +nasturtium +schnapps +engineering +skateboard +ground fir +bouquet +bunk +resort area +fleur-de-lis +power steering +opera +Bolivian +Friesian +buckskins +bay +slider +frozen yogurt +cabin cruiser +saunterer +lean-to +fishing eagle +bog star +cantaloupe +mouth +music stand +fiddlestick +brilliantine +pinball machine +bairn +barred owl +bath oil +signorina +Mason jar +nymph +rubber band +garden nasturtium +razorbill +Japanese beetle +batting cage +trestle +borage +Secretary of the Interior +scanner +baguet +baseball cap +chow mein +pen +jewelweed +barbet +chasm +pectoral sandpiper +holster +glasses case +sand +crevice +Kickapoo +snowboard +locket +satchel +tankard +alpinist +moorhen +cow pen +whooper +crown +chain +silversword +wild geranium +hi-fi +Tibetan +waterwheel +bee orchid +ruby-crowned kinglet +common broom +tabloid +javelin +sauna +klammath weed +zebra finch +spider orchid +velour +chiffon +lecture room +barrel +loggia +millstone +flatlet +soupspoon +econometrician +golf-club head +daphnia +parlor +fire-eater +juggler +attache case +hay bale +kisser +knitting needle +news magazine +flatbed +Senegalese +trumpeter +trampoline +brogan +bone +caftan +lobster pot +gazpacho +anthill +ramekin +mainsail +penitentiary +spotted flycatcher +cookstove +root beer +broom beard grass +pogo stick +plywood +epee +gas oven +Global Positioning System +sweet false chamomile +breakfast area +bullring +second cousin +wave +decolletage +rodeo +won ton +swastika +bobby pin +papaw +retaining wall +Muscadet +heavyweight +energizer +banner +amusement park +whinchat +drugstore +waxwork +meander +congee +heat sink +switch grass +commuter +peony +western white pine +wild raspberry +nightgown +saute +cardinal +claret +pollinator +biryani +pina colada +cassette deck +European sandpiper +block +flan +birdcage +baby +lieutenant colonel +ticking +European white lily +dog violet +coat hanger +premature baby +organza +string bean +balloonist +hurricane deck +window box +hang glider +bullfighting +piste +seahorse +hard cider +batik +common mullein +petite marmite +stuffed mushroom +tequila +ground ivy +fountain grass +stray +putter +buffer +comet +bomber +woodcarving +baseball glove +halter +garnish +selvage +megaphone +sea fan +rabbit hutch +very important person +analog watch +long-head coneflower +northern pike +roll-on +cigarette butt +terraced house +penknife +windshield wiper +cricket +straightener +snow pea +cockerel +canister +sour bread +recovery room +toilet bowl +tyrannosaur +big sister +quartz battery +television receiver +vitamin C +tailpipe +field thistle +stonechat +col +monstrance +gift wrapping +herbivore +quarter horse +ice-cream sundae +rumpus room +eyepatch +clary sage +French lavender +snorkel +choir +tent-fly +cat box +horse racing +high priest +barrel cactus +pin oak +wild thyme +keyboardist +raiser +hammock +hail +bungee +chocolate mousse +major +buzzard +gopher tortoise +Chablis +water meter +benthos +donna +blender +Mauser +avocet +rye +mulch +chancel +dusty miller +mate +corbel +minaret +frittata +French toast +mosaic +home brew +water faucet +beard +swivel chair +acropolis +largemouth +abbey +tabby +driver +copperhead +stirrup +Boston fern +Tennessee walker +artichoke +honor guard +chapatti +enchantress +sweat pants +electric organ +column +dry vermouth +range hood +Red Delicious +rape +splint +catapult +gourd +antipasto +plaza +carnation +star +wood anemone +English primrose +male fern +boot +atrium +Japanese deer +carnivore +yearling +doe +guelder rose +chicory +stretch pants +ice-cream cake +frogfish +tarpaulin +chicken soup +balaclava +tor +feverfew +three-hitter +flyweight +aqua vitae +locker room +wether +teacup +wide-angle lens +hook +ladder-back +osprey +awning +wedding +chest protector +pooch +rose mallow +orange daisy +fondant +envelope +duckling +blackberry +goosander +snorkeling +philatelist +broad bean +Frank +bok choy +basket +absinth +cayenne +blackbird +bottled water +trooper +timber +stable +chestnut +tomatillo +bell +banquet +rainbow trout +macrame +appointee +heart +chipmunk +purple clematis +safety bicycle +shuttle bus +Japanese black pine +lentil soup +downhill +field mustard +brass +hand-me-down +greater yellowlegs +fanny pack +croquet mallet +hip roof +duffel bag +Ritz +document +pie plant +staff member +lifeguard +white-throated sparrow +Cameroonian +hydrofoil +platter +common ageratum +middleweight +chairlift +brunch +pharmacist +lemon +driveshaft +green snake +lip +London plane +mangrove +crystal +siskin +common jasmine +hollandaise +villa +cross-country riding +mother-in-law's tongue +generator +Tanzanian +whisk +seeder +ashtray +griddle +evening bag +bluebird +bran muffin +square dancer +luggage compartment +tropical pitcher plant +autofocus +tape drive +silencer +Hawaiian guitar +swamp sparrow +Zimbabwean +drawing room +weekender +liparis +streambed +samosa +hitter +water heater +tidal basin +ossuary +dik-dik +camouflage +fiance +Jordanian +rolling pin +slingback +turret +hen +jennet +playpen +woodhewer +bushing +church bell +bear grass +double knit +tennis pro +Joe-Pye weed +pave +pochard +painted beauty +crinoline +gumbo +trestle table +schnitzel +balloon flower +Turkish coffee +extension cord +wireless local area network +sluice +umbel +microeconomist +sky +aisle +commander in chief +hydroplane racing +poll +Coca Cola +fuel injection +bird pepper +monkey puzzle +English muffin +riverbed +varietal +kachina +airport +saltwort +oolong +red-hot poker +mihrab +cocoa +jersey +Walkman +syndic +Hessian boot +millstone +carpenter +outfall +curbstone +mocha +field pansy +patriarch +slacks +switchblade +killdeer +whelk +pampas grass +racquetball +platform bed +Indian rhinoceros +Japanese iris +blacktop +dinner jacket +stud +jodhpurs +telephone pole +business district +kurta +basil +handset +file folder +gloriosa +orphan +cantle +cookie sheet +cafe au lait +drawbridge +hill myna +Western diamondback +watch case +cardcase +bowling alley +mattress cover +canvasback +pompadour +cornice +matador +cigar cutter +skunk cabbage +baptismal font +bitters +refectory +egg +parula warbler +tiger lily +field house +nanny +skin-diver +soda water +lymphocyte +carport +chocolate fudge +amphitheater +sugar candy +sea hare +open-face sandwich +dessert spoon +staple gun +envelope +worker bee +general +garment bag +maypop +autobahn +Atlantic puffin +polo shirt +Humvee +spice rack +grotto +banderillero +gaillardia +black-crowned night heron +oboist +weigela +Dictaphone +dwarf iris +marsh mallow +yarrow +eccentric +catsup +jade green +mistress +henbit +beachwear +head +commuter +strawberry tree +chickpea +clothespin +fleabane +brussels sprout +winter melon +Laconian +great horned owl +caricaturist +nan +flowerbed +triple sec +dairy +round of golf +cardinal +kauri +Zulu +Armagnac +cowberry +mouthpiece +wild calla +bling +puppeteer +beer drinker +adder +field sparrow +chocolate pudding +blacksmith +finback +Shetland pony +cheese fondue +panty girdle +soda can +electrolytic +florist's chrysanthemum +yellow jasmine +tudung +equalizer +ridge +dulcimer +grappa +barn swallow +coneflower +enamel +poached egg +halfback +yak +toby +Fleet Street +blue catfish +sand tiger +flying buttress +snaffle +stoop +first base +cultivated land +first lady +waratah +headquarters +arnica +lovebird +common morel +parasol +disk clutch +Xerox +vitamin P +vitamin B12 +long sleeve +certified public accountant +hot pants +pitch pine +pantie +drawers +cake mix +boar +grey +bride +false sago +bullion +coach house +bass guitar +Japanese banana +meadow clary +black belt +Canterbury bell +smallmouth +treadmill +great white heron +enchilada +rummer +captain +camisole +wild garlic +oak fern +ultramarine +peach +hawkweed +autostrada +adit +anaconda +artwork +skinhead +jello +hermit thrush +Bewick's swan +dress suit +trail bike +stubble +common polypody +Riesling +Easter lily +telegraph key +envelope +garlic bread +perianth +salad bar +steppe +club sandwich +nude +garden forget-me-not +Tuareg +flood +Statehouse +charcoal +boy scout +Rhone wine +parfait +spoor +lanyard +octagon +brown bread +quarterback +quilted bedspread +hookah +Pepsi +hamburger bun +entrepreneur +saddle oxford +snake's head fritillary +undies +chemise +skidder +chickpea +carnation +honey bun +mortar +Montrachet +automobile horn +skylight +gingham +rafter +pantile +climbing frame +scarlet runner +cable +cornstalk +mockingbird +raisin bread +chili sauce +hand calculator +concert-goer +detached house +coq au vin +lasso +hyssop +globe thistle +paper clip +slide +Jerusalem artichoke +tetrahedron +mock orange +lemon lily +finger +little sister +handcuff +horse wrangler +pavlova +oilcloth +snow-in-summer +common mugwort +greenshank +ice-cream cone +rubber boot +gunnysack +disk jockey +long trousers +sorghum +pontoon +calf +fire extinguisher +cotton thistle +pilot whale +ao dai +steamroller +wristwatch +tawny owl +city +country store +ironweed +kennel +bathrobe +rattan +drawer +fly tent +choline +musk thistle +courthouse +Yugoslav +bush +trawler +shellflower +jade vine +ragged orchid +pea soup +King Charles spaniel +hubcap +snook +paddy +bow and arrow +shovel +dill +cliff swallow +cadaver +hijab +masterpiece +fish geranium +kettle +sanitary napkin +carrot stick +Mountie +peanut brittle +dam +jackal +windowsill +butterfly orchid +bodice +picador +pale yellow +beanie +petiole +tenor saxophonist +bungalow +gnomon +stock saddle +field glass +rigging +wood grain +Speaker +settlement house +swamp milkweed +paper nautilus +tangerine +champagne +crescent roll +library +Schmidt telescope +stemless carline thistle +motorcyclist +alpine ash +planchet +water closet +casuist +hand luggage +hyssop +spaghetti and meatballs +cannelloni +cedar waxwing +water dog +brick red +linkage +sweep hand +purple heather +macaroni and cheese +butter knife +refreshment +malt +St. Augustine grass +wainscot +compass +gas heater +tamale +table saw +referee +borsch +projector +dracaena +peppermint +Reuben +Abyssinian banana +glassblower +floss +small stores +artilleryman +lapwing +ranch +garbage man +dwarf banana +commelina +currant +adulteress +landlocked salmon +pasqueflower +nan +tiger lily +Eritrean +rotunda +catsup bottle +mezzanine +royal fern +blended whiskey +bowler hat +mistletoe +manor +fusee drive +pistachio +dispensary +swamp +amputee +sculptor +schoolmaster +Chinese anise +dwarf iris +livestock +chronograph +nectarine +jockey +plaster +motel room +swamp azalea +hippeastrum +space station +duchess +catacomb +dovetail +cockscomb +common spotted orchid +brittlebush +cleats +cloche +hotchpotch +cabin car +prey +indigo +light beer +bear's breech +jonquil +analyzer +alyssum +spur gear +ice tea +honey buzzard +twayblade +dirndl +atlas moth +croquette +carafe +flyweight +professional basketball +multivitamin +air terminal +phial +roll-on +skunk cabbage +bird of paradise +rose +cooter +camping +divided highway +herbage +sweet vermouth +common comfrey +eggplant +office building +glutton +gefilte fish +bicycle rack +swamp birch +Venetian blind +Pernod +Norway spruce +portrait camera +bastion +vitamin Bc +Ugandan +Indian red +okapi +emu +vin ordinaire +chintz +shrimp cocktail +numbat +tall oat grass +cable car +stopcock +ham sandwich +Yemeni +stanhopea +plate +chicken broth +common yellowthroat +California poppy +radio +chocolate egg +mess jacket +tea table +physostegia +Japanese flowering cherry +confectionery +chicken cacciatore +painted nettle +popover +white rice +strapless +mohair +electrical cable +coil spring +arterial road +miniature fan palm +spectator pump +pesto +interlocutor +eastern kingbird +dongle +vitamin B6 +stuffed tomato +cough drop +okra +black +barbecue +burial mound +firstborn +corn snake +amberjack +bollard +horn +Black African +elbow pad +Camembert +circle +Japanese apricot +hearing aid +rock star +creature +taster +bubble gum +scull +lemon balm +chaetodon +anemometer +brake drum +fuselage +courthouse +aqualung +yellow adder's tongue +reception desk +guy +buffalo wing +ginger beer +robin +pantothenic acid +marsh hawk +yellow journalism +exhaust +cardamom +Tabasco +ax handle +patriarch +floor +pine snake +spoiler +hood +sphagnum +parrotfish +orphanage +redpoll +beef Wellington +white spruce +cherry plum +scapular +field lens +broomstick +mouser +wood thrush +Nebraskan +hotelier +milk thistle +soya milk +Munich beer +boucle +snowy egret +dust storm +steward +kudzu +oriental poppy +presbytery +burro +orange soda +stonecrop +splashboard +menagerie +dormer +wire cutter +yellow bells +Dubliner +shore pine +cousin +racing gig +Morgan +gold plate +villager +snifter +granny's bonnets +egg roll +Spode +amabilis fir +babbler +pestle +heliopsis +halter +black spruce +President of the United States +ski slope +chocolate fondue +lockstitch +motel +Epipactis helleborine +tabbouleh +Yorkshire pudding +overpass +Timorese +presbyter +tablefork +bottle gourd +tiara +vintage +pilgrim +reindeer moss +shower stall +towel rack +kachina +chef's salad +breeder +cow parsnip +walker +Black woman +Irish coffee +portrait lens +lateen +gilt +successor +cargo container +Lithuanian +mayapple +paisley +highchair +strawberry jam +flying fox +field scabious +blue-eyed grass +screw +Frisbee +dressing room +cholla +walkie-talkie +red currant +centrifugal pump +smorgasbord +hot rod +marcher +rowanberry +welwitschia +amphitheater +pew +concert band +bosom +pillbox +seagrass +openwork +meadow goldenrod +shower +chicken sandwich +Boston ivy +plastron +oilfield +stuffed tomato +juniper berries +frame +Spanish mackerel +family room +powder horn +fight +maguey +bunker +work-shirt +air filter +nosh +sugar bowl +foothill +reliquary +tugboat +horsebox +grater +palace +board member +campsite +halibut +geneva +ginger ale +high commissioner +genet +bodywork +spaghetti +protractor +pipe cutter +wood anemone +turkey cock +surge suppressor +green turtle +spoiler +bedsitting room +television room +ballot box +shasta daisy +impeller +capote +bitter +California wine +lock +spinnaker +gill fungus +baby's breath +nut and bolt +moonflower +houseboat +distributor cap +coffee bean +gusset +bowling ball +knitwear +frieze +mistflower +roadster +cue +circuitry +brake +butt hinge +Chickasaw +leopard frog +wing tip +puree +mantel +pantheon +grandfather clock +cockchafer +pomegranate +cleaners +eyeshadow +Oregon cedar +rock hopper +hawksbill turtle +agriculturist +yellow-crowned night heron +Albanian +pumpkin seed +chateau +goggles +camper trailer +bracket fungus +cigarette case +signal box +saddle blanket +poison ivy +set gun +cattleya +dry fly +concert hall +personal digital assistant +talcum +deodorant +common starling +painted turtle +kea +plenipotentiary +pantyhose +masjid +buskin +hurdle +cocktail lounge +belting +sour dock +knife blade +sugar snap pea +paddle +dickeybird +brace +keep +call center +yacht +lead pencil +tumbler +production line +tetra +private +French window +express +ski boot +pinto +broad bean +American crow +screech owl +snapper +power cord +Manx +rambutan +sun deck +stonefish +golden eagle +national monument +readout +cork oak +hacksaw +beer can +bathe +tussock bellflower +wet suit +mihrab +big game +highlighter +sprocket +measuring worm +grapefruit +samovar +distributor point +steak knife +incubator +loon +temporary hookup +hippodrome +hot spring +spacesuit +flea market +clay pigeon +catbird +earmuff +tetherball +yellowfin +cellophane +lanolin +clapperboard +velveteen +police dog +cashew +sequencer +mango +duplex house +bazaar +Golden Delicious +red carpet +collet +kickstand +broadloom +diskette +tank engine +compact +diesel-electric locomotive +whale shark +water moccasin +mountain avens +tropic bird +ginkgo +ski cap +fixative +glockenspiel +chopine +ethernet +herring gull +skeleton key +finger paint +conference table +great crested grebe +harbor +white-crowned sparrow +Bullock's oriole +guestroom +boutique +cable television +roulette wheel +Luger +Latin American +trumpeter +blindfold +baby +freshwater bass +home plate +bonefish +giant sunflower +giant tortoise +planking +pigeon hawk +oceanfront +door +bazaar +common wasp +conformation +kick starter +kid glove +corydalis +shuttlecock +writing desk +ivory gull +shirttail +diving suit +weka +downy birch +altar +wild sage +tufted puffin +cabinet +Orpington +cineraria +bottom +dial +coracle +resort hotel +soap dish +spotted owl +billiard room +ghetto blaster +red-breasted nuthatch +hatchling +chalet +bracteole +crusher +mixer +net melon +farmhouse +Dutch oven +transept +penlight +palmyra +stewing pan +solar cell +crochet needle +black-winged stilt +germander speedwell +crinkleroot +truncheon +bunchberry +hatchback +sounding board +mixing faucet +chess master +bisque +Brie +Sitka spruce +pawn +Mexican-American +space rocket +choreographer +collared peccary +duffel +nacho +patchcord +carpet snake +omnivore +watering can +hall of residence +streamer fly +sunroof +great grandson +oil refinery +billiard player +ivy geranium +key palm +pinwheel +yellow-shafted flicker +purple onion +soldering iron +condominium +fishing gear +heat pump +marine iguana +cuckoo clock +Bletilla striata +headrest +spotted salamander +field hockey ball +pound +carboy +vertical stabilizer +groundsheet +cinnamon bread +acorn squash +sheathing +lakefront +Jeffrey pine +synthesizer +olive +apple +pannier +ponderosa +Jew's-ear +latch +equatorial +metasequoia +permit +bloomers +town hall +fava bean +casino +bier +jampot +common snapping turtle +clary sage +oatmeal +Dutchman's breeches +massif +Guyanese +heifer +handball +sweat suit +pomelo +Iceland moss +customhouse +sandbag +archer +gyrfalcon +sword cane +marmite +whole snipe +blue crab +sugar spoon +brownstone +chicken wire +lizardfish +dump truck +chicken yard +chamois +electric +idle pulley +jujube +wrestling mat +aoudad +Burmese cat +water shamrock +dormitory +Unknown Soldier +hearse +bumper +clipper +desert pea +critter +semitrailer +backboard +common St John's wort +Atlantic manta +song thrush +jukebox +quoin +eastern chipmunk +copper beech +paintball gun +bull +package store +fraise +royal poinciana +niqab +traction engine +objective +day nursery +ski lodge +orphan +summer house +cereal box +router +sleuth +jodhpur +polyp +croquet +sport kite +green onion +tulle +etagere +tussock caterpillar +rest house +elderberry +bridal wreath +Torrey pine +silver wattle +kidney bean +pentode +laelia +Allen wrench +sporran +red drum +tricot +heterodyne receiver +magazine rack +stone curlew +trawler +suckling +niblick +sandwich plate +double door +Togolese +pitching wedge +desert tortoise +cloth cap +date palm +webbing +jumper +frogmouth +copperhead +covered couch +black mallee +riser +scraper +gauntlet +pantheon +food court +muntjac +grocery bag +bread-bin +transmission shaft +primigravida +window seat +crab apple +seat +Fresnel lens +dendrobium +hatchback +little theater +butter dish +back porch +umbrella tree +carrot +seventy-eight +coconut +music stool +Tesla coil +bay willow +American basswood +sabot +wheel and axle +gazette +lute +bassinet +hart +mecca +breadbasket +silverfish +handball +Scotch pine +box camera +stately home +Hereford +tread +single-breasted jacket +desk phone +deodar +professional boxing +fly casting +box wrench +black oak +martello tower +red campion +bullock +sweet William +bay leaf +dollhouse +flounder +fox hunting +beanbag +king mackerel +rouge +film advance +common mallow +parasitic jaeger +satellite receiver +nurse shark +chesterfield +tomatillo +plimsoll +hatbox +bloomer +foul-weather gear +longleaf pine +horse mackerel +tree lizard +bark +belfry +Treasury +perch +purple finch +stag beetle +fragrant orchid +tachymeter +tadpole +cookie jar +knee piece +agueweed +bones +chick +golf glove +toothpick +taboret +rotor blade +field artillery +purple willow +redhead +spark plug +guava +voice mail +cross +butterfly valve +star magnolia +olive +room light +Australian turtledove +embassy +Iraqi +singles +nestling +spinning rod +radial engine +rowan +sandbox +boss +moccasin flower +veneer +mint +American chestnut +white whale +CPU board +florist +press box +hurricane lamp +giant kangaroo +greater whitethroat +winter jasmine +blue +department store +southern red oak +saber saw +corn muffin +bellbottom trousers +toaster oven +red eft +condominium +galago +sunbather +redpoll +common European earwig +songbird +linnet +light meter +bracer +tepee +gumbo +water glass +roofing +spathiphyllum +shofar +sand lizard +washroom +Brussels carpet +brachyuran +home room +floatplane +knee brace +solar heater +felucca +gas ring +maguey +manse +blue columbine +cuppa +cigar band +male orchis +mudskipper +couscous +Chinese parasol tree +dude ranch +banyan +gopher snake +sundrops +aviary +African daisy +missel thrush +Photostat +stone pine +circus tent +tangle +printer cable +grease-gun +rose chafer +light pen +plantain +hearth +bullfinch +post oak +slow loris +Newtonian telescope +head +punt +spindle +New England aster +spotted sandpiper +pond pine +grass skirt +bug +black rat snake +tabasco +bull shark +tennis camp +scrambler +popinjay +bing cherry +ministry +cash register +redheaded woodpecker +kameez +farmer's market +roan +harpy +European toad +pizzeria +camshaft +hemp nettle +chicken coop +cottage pink +daybed +observatory +airdock +mountain devil +newsstand +kingfish +snow gum +jackdaw +lacquerware +peeler +miro +sister ship +damask rose +pack +snowshoe +Liberian +paramecium +tidytips +professional tennis +bookend +wood swallow +cayuse +cranberry +rock squirrel +steak au poivre +soul patch +female mammal +sash fastener +songwriter +oxeye daisy +apse +floor joist +hand towel +wheatear +cero +soul mate +golden fig +bus stop +psycholinguist +convenience store +manor hall +mountain sandwort +Euopean hoopoe +haricot vert +mausoleum +violist +flashlight battery +chard +fixer-upper +bank martin +testudo +diving duck +kohlrabi +Omani +sphygmomanometer +greyhound racing +chestnut +rattlesnake plantain +chaffinch +wolf pup +teakettle +cairn +souk +resident commissioner +chuckwalla +gaiter +capercaillie +liver chestnut +bean sprout +land line +ambassador +green pepper +common chickweed +Sharpie +Oriental arborvitae +oncidium +pallone +currawong +sweet alyssum +fire tower +eyebrow pencil +redfish +apricot +clementine +blucher +wigwam +pangolin +buggy +common oak +jumbojet +laser +cigarette holder +racquetball +georgette +cleft +scouring pad +drum printer +pond scum +American red squirrel +caranday +swamp willow +blindworm +brook trout +defense system +nyala +three-way calling +mizzen +shuttle +African lily +Oregon white oak +rain tree +fuel gauge +oriental cherry +wahoo +pear +jungle gym +bass fiddle +outrigger +angelfish +Old World coot +lime +battlement +yarmulke +herpes varicella zoster +burp gun +Alpine glacier +stun gun +pilot boat +Southern crab apple +bushtit +pullet +polo pony +jackfruit +raw vegetable +French marigold +golden shower tree +spike lavender +wahoo +brass knucks +cabbage palm +diesel-hydraulic locomotive +red jungle fowl +prairie sunflower +rye +loofa +icecap +shade tree +secretary bird +saffron +cos +muskrat +videodisk +Carolina wren +candy bar +Bohemian waxwing +flowering almond +cold frame +raglan +pine siskin +quince +western red cedar +red maple +adobe +agora +kumquat +tenement +bantam +bayberry +water jump +great granddaughter +snips +porcupinefish +brochette +love-in-a-mist +Iceland poppy +common sage +pace car +camel racing +slipcover +nopal +shoehorn +calypso +rhea +in-basket +maple syrup +cold chisel +Pacific ridley +dietary +aperture +lapin +rock hyrax +house wren +litchi +ragged robin +control center +shoebox +arabesque +eider +silver birch +bantamweight +ax head +softball +blue gum +Bechtel crab +tomato sauce +green douglas fir +sweet gum +macaroni salad +red phalarope +budgerigar +Bedford cord +Uzi +green woodpecker +ohmmeter +bacon-lettuce-tomato sandwich +hackney +Easter egg +motmot +red pine +opium poppy +gat +pussy willow +greater scaup +ocelot +persimmon +western hemlock +carambola +pinion +Malcolm stock +bobsled +larkspur +wood drake +pinetum +red gum +draft beer +funnel +terrarium +Pinot blanc +doodlebug +brittle star +salsa +cantaloup +pollack +stockpot +eastern hemlock +rock wren +burqa +squash +aircraft engine +billy +flamingo flower +odontoglossum +old squaw +redstart +sheepskin coat +mate +flathead catfish +gentianella +bilberry +bog rein orchid +incense cedar +mew +Colorado spruce +cob +portmanteau +grenadine +common ginger +masdevallia +compound microscope +sobralia +white fungus +guppy +chapterhouse +honey +green frog +sea swallow +African marigold +astrolabe +verdigris +yellowhammer +carrot juice +oxlip +medicine ball +highboy +grass frog +gamebag +surgery +mincer +mulloway +cactus wren +box office +resonator +table-mountain pine +European curlew +supernova +cabbageworm +peach +plane seat +asp +Yquem +tomato hornworm +rook +quadruped +chador +micrometer +dabchick +Afro-wig +balsam fir +bucket seat +sage green +macon +blue poppy +chinquapin oak +black pine +spinach +chrysalis +carnauba +tee +bearberry +shirt button +tree of heaven +southern white cedar +covered wagon +brood hen +spadix +European catfish +winter wren +bulldog clip +carpetbag +study hall +chino +simian +closeup lens +cookie cutter +grapefruit +mandola +sassaby +Allegheny plum +piaffe +scorpion fly +booby +draft animal +field tent +cumin +laurel oak +smooth-leaved elm +American arborvitae +American toad +grinding wheel +mountain ash +cuttlefish +pipistrelle +parer +safety rail +Clark's nutcracker +side-blotched lizard +giant hornet +wicket +dugout +electric toothbrush +dhow +common four-o'clock +long-eared owl +anchor +near beer +tansy +creme caramel +guided missile frigate +shelduck +durian +compact +iron tree +shiitake +polo +camouflage +pedal pusher +salon +tangerine +lacebark +Swiss mountain pine +goalpost +poolroom +space capsule +wild cherry +dress hat +wave +raglan sleeve +cassia +Jerusalem artichoke +cabbage palmetto +marsh harrier +American redstart +sea squirt +cliff diving +sparrow hawk +watch cap +frankfurter bun +police boat +flash camera +neem +eastern meadowlark +Italian cypress +orb-weaving spider +graniteware +sewing basket +latex paint +rock dove +stator +leaf lettuce +roulette +broadcloth +Spork +panicle +sternwheeler +cider vinegar +brown creeper +cowfish +closed gentian +chickpea +port +pimento +sheeting +matilija poppy +hawk owl +guava +papaya +huisache +European shrike +racing skiff +yellow warbler +gumbo-limbo +North Carolinian +staysail +court +iced coffee +money belt +shaver +Psychopsis papilio +sumo ring +refection +kingfish +clock pendulum +greater butterfly orchid +disk harrow +tawny eagle +polyphemus moth +pieplant +Nicaraguan +bocce ball +California box elder +porbeagle +crown of thorns +Mexican sunflower +fennel +stream orchid +slip ring +white fir +fold +moss campion +fairy ring +hose +pony-trekking +western larch +meadow pipit +Cape May warbler +longan +bookmobile +junk shop +lemon shark +smelling bottle +solan +widow +sea pen +universal joint +day game +goldcrest +maiden pink +biographer +rotunda +oriel +arranger +gambrel +Angora +fen orchid +leading rein +Wilson's snipe +European nuthatch +natterjack +athletic supporter +mouflon +emergency room +swallow-tailed coat +western meadowlark +feather star +Navy SEAL +toilet bag +loquat +lesser butterfly orchid +thumbhole +breathalyzer +featherweight +collards +mayfly +confessional +mountain ebony +redwing +Norway maple +refractometer +stagecoach +gasoline gauge +octopus +baker +Rhode Island red +European tortoise +cardiologist +Punjabi +Arkansas kingbird +tamarind +drum brake +flash +yellowtail +stokes' aster +emperor +free house +sour gum +ruddy duck +hamadryad +command module +tinamou +Norway lobster +washstand +European hornbeam +roaster +black-necked grebe +tallgrass +leopard lizard +anastigmat +Blackburn +deutzia +ground rattler +Christmas fern +wild pink +sesame seed +carrycot +Italian parsley +nectar +roll-on roll-off +true laurel +anisette +candy corn +flowering maple +revers +dun +tobacco hornworm +common sunflower +common grape hyacinth +cardiograph +electric meter +herb Paris +goalmouth +spruce grouse +canopy +wind poppy +stemma +gateleg table +lumper +speckled rattlesnake +gudgeon +rough-legged hawk +internal drive +pomelo +piece de resistance +storm door +clementine +Japanese pink +settler +yellow jacket +Fraser fir +royal palm +cicada killer +cayenne +guava +bluewing +red baneberry +lesser yellowlegs +cache +bog rose +sparring partner +ski jumping +sherry +glacier lily +beer mat +shredder +American widgeon +protectionist +green olive +black-tailed deer +Alpine fir +dispatch case +whipping cream +African daisy +cantilever bridge +maraschino +rhea +ink bottle +dacha +hagberry tree +lesser rorqual +orchard oriole +candidate +cuticle +breadfruit +fishbowl +giant puffball +closed gentian +Joshua tree +tie rod +beard lichen +flame tree +stegosaur +acerola +Swan River daisy +common murre +flowering almond +protegee +loggerhead shrike +Wilson's warbler +Japanese honeysuckle +basilisk +skimmer +hybrid tuberous begonia +pumpkin ash +chafing dish +collared lizard +iced-tea spoon +scrubbird +Iceland poppy +grey kingbird +wallflower +slick +diesel +Swiss pine +ethernet cable +ketch +lightship +black cherry +swordtail +Monterey cypress +lightweight +Floridian +Sabine +stall +contact +viola da gamba +hemstitch +upland sandpiper +box spring +sassafras +radome +lesser scaup +bluefin +yellow-bellied sapsucker +armored car +cabin class +Moorish arch +webcam +aquavit +overall +sergeant major +soft shield fern +gin and it +bobolink +subcompact +falconer +black morel +roadrunner +lab bench +thong +coffee urn +weeping beech +caladenia +southern live oak +scanner +wine vinegar +common speedwell +European roller +fuji +snag +piping plover +concertina +secateurs +meat thermometer +supercomputer +funnel +dais +western fence lizard +spruce pine +pommel horse +Cassegrainian telescope +pitta +India-rubber tree +mangosteen +tamp +aposematic coloration +dustcloth +birth +Atlas cedar +reed bunting +jabiru +sainfoin +press photographer +golden oriole +laryngoscope +thermal printer +winder +doubles +cricket ball +dabbling duck +tonic +Buddhist +Morris chair +swatter +quaking aspen +ancient pine +American larch +evaporative cooler +click beetle +yellow-breasted chat +souchong +bluegill +pied-billed grebe +tricorn +spring beauty +southern magnolia +rowel +chili +hard roll +flathead +satsuma +gangplank +bourguignon +cockfighting +greenwing +plum tomato +fly orchid +gnatcatcher +spotted eagle ray +ovenbird +brassavola +mocha +candy cane +afterburner +thriftshop +study +winter crookneck +grinder +muskellunge +sacred ibis +inverter +sandwort +deer fern +stair-carpet +Cotes de Provence +ovenbird +rex begonia +American woodcock +poison ash +lowland fir +pawpaw +loblolly pine +kinkajou +European hackberry +pest +coralwood +Bedouin +acetate rayon +snuffbox +radiator cap +basket oak +table-tennis racquet +smew +midge +telescopic sight +radish +great burdock +separate +damask violet +broadbill +bourbon +blacktip shark +gift shop +khimar +date +woodland caribou +policeman bird +grey birch +American elm +strawflower +officiant +hart's-tongue +straight razor +Spanish elm +radicchio +white croaker +vicuna +soft-shell clam +flannel +adonis +bonito +kittiwake +English walnut +soldierfish +hipflask +spotted crake +Streptopelia turtur +American maidenhair fern +corn cockle +telephone cord +canopy +playback +diocesan +marsh orchid +manakin +purple grackle +cob +fishmonger +otoscope +vermillion flycatcher +inhaler +instar +licentiate +myrtle warbler +goat herder +benthos +toggle +drumhead +piranha +doorplate +vault +triptych +red-necked grebe +transporter +vernier caliper +flathead +Portuguese man-of-war +countrywoman +vacation home +Bactrian camel +night-light +module +lemon curd +carancha +painted daisy +bok choy +ratatouille +troll +escarpment +cinnabar +computerized axial tomography scanner +lychgate +sowbread +bedside +guided missile cruiser +reel +cleat +hemostat +blue shark +Seven Wonders of the Ancient World +motorized wheelchair +pillow block +horned puffin +prickly pear +electric range +mother's daughter +vein +Oregon maple +bird dog +faceplate +wren warbler +feather reed grass +common alder +Adam's needle +straitjacket +organ-grinder +gantry +bikini pants +peristyle +herpes +terry +toad lily +celandine +red-breasted sapsucker +bragger +green peafowl +fuschia +quoits +house martin +dome +herpes simplex 1 +touraco +meeting house +vacuum gauge +cat's-ear +crisphead lettuce +carpet moth +European rabbit +puff adder +Old World scops owl +fire pink +fruit punch +ant bear +black walnut +stroboscope +white mangrove +pine grosbeak +cast +check-in +ring-necked parakeet +matai +shingle oak +fieldwork +rue anemone +landing net +ouzo +herringbone +lyceum +hydrogen bomb +mullein pink +masher +evening grosbeak +water vole +livingstone daisy +tomatillo +cavalier hat +interphone +wild lupine +goosefish +sugar maple +plantain +white dead nettle +Monterey pine +bugle +veloute +marsh gentian +Bermuda buttercup +alehouse +Peter Pan +thong +LP +tulip tree +scanner +scarlet tanager +music hall +angel shark +pecan +eight ball +rosy boa +outboard motorboat +garage +fanlight +black cottonwood +notornis +mountain fern +lunar crater +reddish orange +whitetip shark +executant +European ladies' tresses +washboard +revolving door +case knife +balloonfish +greater kudu +tarpan +cog +wet fly +Irish soda bread +basement +broken arch +canopic jar +muscat +kazoo +bobsledding +loaner +black guillemot +English saddle +garlic mustard +Foucault pendulum +mulberry +clotted cream +dove's foot geranium +Atlantic ridley +convector +ground floor +European wildcat +poinsettia +hideaway +great barracuda +black beech +bushy aster +cornflower +tam +true slime mold +carving knife +holly fern +railroad tunnel +crimson clover +disposal +etamine +suspension +plasmodium +political scientist +minnow +Spanish rice +twist bit +subway train +Scleroderma citrinum +saw palmetto +console +gimlet +hand pump +waratah +rock rattlesnake +keel +server +curlew sandpiper +hone +sable antelope +inkle +photostat +foresail +sallet +tiger salamander +chutney +onlooker +Exmoor +tiramisu +drawing room +battery +sour orange +juniper berry +beeper +funeral home +fescue +Maksutov telescope +ranch house +jai alai +carob +socket +popcorn +sandbar shark +pipal +summer tanager +oast +skipjack +rolling stock +dropper +great snipe +turnip greens +cowpea +honeycomb +ichneumon fly +maternity hospital +harp seal +nylon +bomb shelter +horse tick +litchi +camel's hair +mimosa +bur oak +anvil +belay +pinhead +continental breakfast +burglar alarm +Mojave rattlesnake +auxiliary storage +lightwood +ratepayer +cecropia +retractor +quadrate +pepper tree +Venus' slipper +abattoir +strawflower +firewater +purple saxifrage +black rat +pack +pepper pot +mayweed +winger +whitetip shark +great yellow gentian +snowdrop anemone +garden angelica +soy sauce +white poplar +inkwell +crouton +gas gun +honey locust +house of cards +ice maker +moquette +arrack +casualty +butterfly orchid +eau de vie +mosquitofish +prairie smoke +haft +horseshoe +steel +peach orchard +Mexican hat +encaustic +shoe +pennywhistle +sweet woodruff +hull +doorsill +globe amaranth +day school +housedog +crown princess +oxbow +maxi +positron emission tomography scanner +compere +European turkey oak +peanut +sentry box +house physician +hot line +loquat +rove beetle +riband +flowering fern +fan vaulting +ceibo +bongo +bat boy +omelet pan +European ash +breadwinner +gaff topsail +clerestory +bushbuck +bluethroat +khukuri +Father +portcullis +candy egg +brake lining +lawn furniture +buckskin +garden pea +Brazilian rosewood +Italian bread +horn poppy +silk tree +Christmasberry +hotel-casino +poplin +false lupine +desert sunflower +mimeograph +alpenstock +cork tree +cultivar +common mosquito +pollard +black marlin +understudy +lancet window +college +breadfruit +Herero +Labourite +bar printer +squaw grass +stelis +firing chamber +sycamore +artificial horizon +radiologist +pansy orchid +bicycle pump +wraparound +bell gable +home computer +orchard grass +carving fork +bergamot +honeycreeper +sewing room +radiator +core +brown bat +goose grass +adjutant general +Erlenmeyer flask +massasauga +tail rotor +cardinal tetra +Drambuie +wine palm +Sarcoscypha coccinea +shantung +Calvados +garganey +vicar +house mouse +creeping oxalis +digital subscriber line +cedar elm +backgammon board +blackberry-lily +pallid bat +New Zealander +Barbadian +rose geranium +European spider crab +gharry +electric hammer +mustard +Chinese lantern +laundry cart +filament +mozzarella +gooseberry +sukiyaki +porkpie +culvert +altazimuth +plum pudding +serin +Spanish dagger +Asian crocodile +crevalle jack +mascara +pig bed +alderman +northern shrike +Sufi +purple-fringed orchid +derringer +linseed +hockey skate +bell jar +Japanese wistaria +mantled ground squirrel +western toad +lieutenant commander +mechanical piano +ovoid +paddlefish +demijohn +coast live oak +brick +gearset +tailstock +phonograph needle +winery +tuberose +mother's boy +shot tower +crucian carp +carpet pad +lamb's-quarter +Menorah +common white dogwood +hypanthium +rosebay +wild medlar +soil horizon +sweet orange +bitterroot +hand glass +cloisonne +towpath +gum ball +margay +carambola +bolt cutter +charger +vibraphone +gueridon +elephant tree +wood-frog +ash grey +duffel coat +third base +chunga +glebe house +lake trout +encephalartos +Japanese oak +northern red oak +pruner +blue orchid +Biloxi +western wood pewee +corselet +alabaster +anechoic chamber +grass pink +wax begonia +blue daisy +pennyroyal +Asian tiger mosquito +cheese souffle +flat bench +caramel +sump pump +bush violet +common fennel +corner +skullcap +asparagus fern +white mangrove +calceolaria +sateen +saltbox +hollowware +head nurse +coal miner +mountain lily +tufted vetch +European perch +line officer +steamer +stickball +shin guard +cauliflower +Monegasque +hatpin +wolffish +trackball +khaki +arthrogram +rocket larkspur +naval commander +Gemini +ski binding +department head +Chenin blanc +wingstem +knothole +aerides +sweet bay +tautog +gangway +waterspout +Hudsonian godwit +armyworm +incinerator +kidney vetch +pine nut +cypress vine +hip tile +sorrel tree +relay +bench press +Kentucky coffee tree +dobson +sapling +false lily of the valley +veld +phaius +vitamin B2 +beaker +wall tent +sieva bean +dusty miller +sewing kit +cavalry horse +diaper +butterfly pea +Spam +saddlebill +pearly everlasting +kowhai +Sister +moneywort +organdy +pine marten +bareboat +hot-water bottle +baby blue-eyes +silver lime +common cotton grass +malmsey +blue pea +baggage car +pineapple +folding saw +cotton rose +brawler +black duck +Weizenbock +pool player +Gujarati +wild duck +purple sage +sage grouse +mail train +arm guard +short-spurred fragrant orchid +queen +eparchy +spring peeper +ortolan +shoulder +fighter pilot +American beech +snowcap +novitiate +roller +butcherbird +canyon oak +brompton stock +firebrick +rudder +light cream +Primus stove +nonsmoker +probationer +harp +kosher +surcoat +videotape +zebu +first class +yam +car +rissole +miso +funambulism +attic +curling iron +shutter +encolure +split-pea soup +yellow rocket +gas oven +ultracentrifuge +chamomile +canteen +eyeliner +yellow squash +Irish stew +collar +doublet +machinist +septic tank +snap bean +Polyporus squamosus +western tanager +creeping St John's wort +back +sinkhole +perforation +Romanian +epergne +fez +comfrey +sidecar +beach pea +screen door +instigator +plughole +woodbine +pigweed +hip pocket +common scoter +squeegee +Surinam cherry +porringer +body stocking +eatage +shallot +enlarger +common canary +trophy case +gun case +plow horse +hot plate +pearl oyster +margarita +madras +backspace key +pigeon guillemot +pajama +buckthorn berry +homestead +bedbug +Linotype +trundle bed +granadilla +theremin +chin rest +bouillabaisse +tumble-dryer +truffle +cassava +kurrajong +gyroscope +European silver fir +C-clamp +politician +green soybean +exponent +flame tree +scissortail +achimenes +crown daisy +soft tree fern +spaghetti squash +pale violet +beaver +dashiki +washboard +driving wheel +sack +foulard +sputnik +boatbill +English elm +sack coat +grog +golliwog +Malayan tapir +May wine +calash +stile +windjammer +American sycamore +rotor head +fast food +balata +dragonet +Emmenthal +metronome +negative +meadow saxifrage +rabbit ears +chenille +round +hobby +crankshaft +Wilson's phalarope +Murphy bed +soil pipe +forecourt +policyholder +tarmacadam +loyalist +gyro +Queen's crape myrtle +shortcake +apple butter +pumpkinseed +heronry +yellow perch +baggage claim +escarpment +diaphragm +mescal bean +shunter +flax +columbarium +Joe-Pye weed +Neandertal man +casement +hole-in-the-wall +Verdicchio +futurist +eaglet +tassel hyacinth +pup tent +fawn lily +cabbage palm +pogonia +hospital ship +water mill +Oregon grape +lentil +grindstone +banana split +inkberry +coonskin cap +bazooka +wrap +anise hyssop +Java sparrow +red-eyed vireo +common opossum +clintonia +bustle +booster +tribesman +soy +panhandle +jaboticaba +locking pliers +Sauvignon grape +ghat +screw +oximeter +white croaker +saucepot +eggbeater +reticule +cabbage bark +looking-glass plant +head gasket +California sycamore +cowbell +Aleuria aurantia +Herr +lever +spider orchid +cashew +shift key +solar house +wood chisel +white +mantilla +stamp +bolero +rear admiral +garden rake +Lao +crowbar +lapdog +buttermilk biscuit +yellow bedstraw +pickerel frog +dowel +serjeant-at-law +mill-hand +lambrequin +state treasurer +red silk-cotton tree +coiffeur +star anise +shoulder pad +marshal +sitar player +gown +ground cedar +hedge maple +caddie +pitahaya +corn marigold +stick cinnamon +woodland star +Eurasian green toad +anti +blueweed +medicinal leech +gaur +chocolate kiss +kit fox +mother +butte +audio CD +blast furnace +vitamin D +nutgrass +cornice +black sheep +hearing aid +lingonberry +quad +lentil +riding crop +pratincole +pentagon +sea lavender +nerita +flatmate +catboat +water clover +angiopteris +mushy peas +crown imperial +music school +woodshed +platy +Turk's-cap +rundle +reading teacher +hardtack +balloon sail +oriental spruce +bluefish +white mulberry +horned violet +satin bowerbird +treasure flower +sustaining pedal +mimosa +spurge nettle +sea green +hasp +lederhosen +pink cockatoo +long johns +basket weave +freewheel +thrust bearing +timber tree +orphan +falafel +common camas +bird of passage +bird's foot trefoil +electric eel +fizz +grape arbor +serape +brace +hazelnut +kylix +horse mackerel +cassia bark +lizard orchid +spat +Brown Swiss +pocket flap +pillory +purplish blue +rolling mill +tappet +broccoli rabe +semi-detached house +mushroom coral +fly orchid +nougat bar +ball hawk +sand wedge +shirred egg +black locust +strip lighting +drop scone +brush turkey +ball +tragopan +dallisgrass +tuatara +great knapweed +potentiometer +Kiliwa +Pacific bottlenose dolphin +accelerator +Darwin tulip +osteopath +Arizona cypress +manna ash +butterbur +cornelian cherry +American holly +nopal +tanker +foreshore +ditty bag +gas lamp +safety razor +chanter +fomite +chip +striped killifish +catalytic converter +plaice +dusty miller +takin +gerenuk +corn chamomile +Japanese pagoda tree +boneset +common osier +Guinean +taro +plotter +celandine poppy +churn +steenbok +edible mussel +sensitive fern +triode +black raspberry +zoo keeper +feather ball +dredger +starlet +cornpone +coat button +rosinweed +toy Manchester +crested cariama +finger food +basilisk +shotgun shell +comfort food +mountain hemlock +candytuft +Stilton +record changer +anklet +ball valve +Mediterranean snapdragon +BVD +sand cat +Galloway +nutmeg +water-mint +woodwaxen +citron +ark shell +federalist +drone +cheekpiece +hyperbaric chamber +addax +field-emission microscope +synchronous converter +men's room +medlar +electronic fetal monitor +Sazerac +false indigo +roof +passe-partout +meadow spittlebug +Phytophthora infestans +oast house +hedge nettle +voting booth +slender salamander +telephone jack +true bug +scouring rush +Scotch egg +matchbook +aperea +cytomegalovirus +garlic press +cove +whitebark pine +Slovene +narrow wale +mother's milk +Audubon's warbler +prickly poppy +cowl +tailorbird +mud brick +bamboo palm +welt +Afghan +Virginia spring beauty +dinner bell +night jasmine +fly rod +microtome +aerie +carinate +picker +brick trowel +loving cup +swathe +green mayonnaise +rivet +bandbox +newsroom +tea tortrix +bobby +gig +hush puppy +garlic chive +piston rod +aspidistra +bluejack oak +harvest-lice +strap hinge +sour mash +macadamia nut +histiocyte +fan belt +shelf bracket +abelia +Hottentot fig +fish chowder +abettor +compote +beige +dioon +hop +haymaker +oilskin +magnetometer +tool bag +tambour +call girl +gringo +fairy light +broad-leaved plantain +second base +zebra mussel +Japanese cedar +pistia +swamp chestnut oak +cashmere +double cream +samisen +lamb curry +companion +kapok +julep +sweet woodruff +gardener +jewfish +inspector general +collembolan +wheel bug +bass +scrubland +wryneck +macrozamia +trouser press +clove +tiger cowrie +yawl +collard +dildo +pony cart +ormer +annual +tessera +chancellery +two-toed sloth +queen +old lady +wringer +spritzer +baggage +black mangrove +black-eyed Susan +semifinalist +highlighter +alfalfa +Easter daisy +escapement +operating table +neutral spirits +bursar +roble +entablature +girl wonder +farm boy +ring ouzel +permanent press +auklet +beefsteak tomato +gaming table +tea bag +manul +giant bamboo +Ozark chinkapin +matzo +furrow +smoothhound +CD-ROM drive +powdery mildew +copilot +garden +American merganser +bunsen burner +Asian longhorned beetle +lead tree +creeping buttercup +Percheron +back brace +axseed +cub +soul food +rabbi +edelweiss +mineshaft +fox grape +sandwort +torque wrench +leisure wear +Mae West +broccoli +loach +maraschino +heavy cream +silkworm +cirque +vintner +whitewash +butterfly pea +two-toed sloth +midiron +ceriman +Bulgarian +operating microscope +sambuca +California fuchsia +silver maple +tangelo +black bean +lugsail +starting gate +leek +sunflower seed +fish fry +clinker +synagogue +coscoroba +brae +uphill +common limpet +golden plover +cedar of Lebanon +amphibian +Canary wine +taipan +agua +feeder +parallel +mater +pink calla +meat counter +yagi +crab cactus +cacao bean +bowfin +alley cat +stonefly +Eastern cottonwood +vernier scale +marginal wood fern +dancing-master +detective +yam +textile screw pine +hooch +spinet +single prop +sassafras +goose barnacle +triple cream +China tree +peeper +dressmaker +snatch block +ironmongery +dressing case +creeping bellflower +silver sage +honeydew +eastern red-backed salamander +peg +nombril +danish +mashie +anarchist +alligator snapping turtle +shepherd +American white pine +runner +chalice vine +rheumatologist +defibrillator +yellow chamomile +lemon balm +peacekeeper +native beech +sandwich board +Bavarian +titrator +paneling +deer mouse +poteen +sugar snap pea +meadow salsify +town crier +best +basinet +common myrtle +night lizard +cushaw +Tampax +camphor tree +gentile +orange peel +putty knife +pyromaniac +Brummie +fever tree +double +nest +inferior +cabbage tree +graduated cylinder +mucor +woodborer +earthwork +potato salad +four-hitter +gooseberry +water vole +ziggurat +grapefruit juice +four-in-hand +cranberry bush +diode +videotape +Mohican +niacin +beetroot +shirtsleeve +cork tree +two-eyed violet +white ash +drawing chalk +baked Alaska +bone-ash cup +toastrack +diastema +bed jacket +dwarf astilbe +yellow honeysuckle +cow pasture +sheet pile +saxhorn +upholstery material +California white oak +Spanish bayonet +horsemint +littleneck +deflector +magician +standard transmission +blue marlin +shallot +feijoa +collar +board +jump suit +common staghorn fern +priory +Xhosa +Loranthaceae +barbecued wing +barmaid +spit +lemon juice +umbrella plant +field pennycress +centenarian +queen bee +fish stick +black bread +dirk +secularist +German American +spotted weakfish +iron foundry +speed bump +yellow-fever mosquito +gag +frame +black-eyed pea +alcoholic +involucre +sperm whale +balanced diet +wax bean +butcher's broom +winter heath +Mainer +Australian pine +gas guzzler +double-breasted jacket +pod +palo verde +trimmer +wattmeter +dyer's woad +crotalaria +vine maple +sulky +jack pine +thumb +Wilton +Panchen Lama +welder +badminton court +business editor +Arabian coffee +Kamchatkan sea eagle +foamflower +steep +plane +freckle +cerebral cortex +Vouvray +tea +forest tent caterpillar +neckerchief +accelerator +jig +bridal wreath +highball glass +New England clam chowder +beach strawberry +call waiting +baton twirler +double boiler +Dutch elm +car bomb +filmy fern +breviary +Florida gallinule +dace +parsnip +riparian forest +crescent +earplug +grab bar +cusk +foglamp +screwtop +black mangrove +mascot +Welsh poppy +gas holder +support hose +salsify +red beech +Indian python +caroler +pineapple juice +lowboy +terra sigillata +black olive +hypodermic needle +radio-phonograph +moussaka +miter joint +creche +tuning fork +black wattle +affiliate +vertical tail +kiwi +red morning-glory +piping crow +runway +Kashmiri +studio apartment +sea feather +Judas tree +boatbuilder +corn earworm +fallboard +Victrola +lechwe +goat willow +turret clock +Canada anemone +leaf lettuce +savoy cabbage +headpiece +Lebanese +fothergilla +hemlock +toolshed +silver tree +blue-headed vireo +weatherman +cylinder +caltrop +adjutant bird +driving iron +millet +European woolly thistle +rose apple +clown +schoolfriend +eastern coral snake +barbecue +executive vice president +long-billed marsh wren +brittle bladder fern +tank destroyer +left-hander +matting +catchment +balsa raft +eastern fence lizard +color tube +corncrib +electric typewriter +westland pine +elder statesman +whey +plonk +mound +cittern +nest egg +copyholder +China aster +basking shark +gavial +common duckweed +vanilla orchid +red-shafted flicker +granadilla +sylph +sty +vest pocket +potherb +little brown bat +Trapezium +ordinary +adult +purple-fringed orchid +abseiler +disco +metal detector +beefsteak fungus +ilang-ilang +barley grass +hawser +suture +brake shoe +staghorn coral +barbecue sauce +Browning machine gun +sarcophagus +disa +oven thermometer +rosemary +track +gorget +quince +royal +piston ring +teak +pin cherry +Komi +walking fern +sloe +synchronous motor +fire-bellied toad +Teleprompter +co-star +cape gooseberry +oscillograph +bass clarinet +cock of the rock +Tyke +showy milkweed +safety valve +branch water +sweet marjoram +hugger +crampon +fairy godmother +band-tailed pigeon +snow-on-the-mountain +minibar +foreland +grosgrain +dita +rampion +calligrapher +jointed charlock +master +sheepshead +barrelhouse +Carolina allspice +mastic +brake pad +whiskey sour +casement window +conveyer belt +stolon +pavonia +shinny +witch elm +logwood +hostel +pageboy +vesper sparrow +pyrrhuloxia +common carline thistle +wafer +boysenberry +screw augur +hack +American white oak +governor general +Mother Hubbard +game fowl +drosophila +delft +nymphet +tollbooth +chough +Russian dressing +plum tomato +American saddle horse +dusky salamander +black medick +red valerian +cordage +Elastoplast +conacaste +backlighting +swell +riveting machine +cowpen daisy +openbill +water speedwell +picture hat +crested myna +servo +bletia +garden trowel +muscadine +common caper +false lily of the valley +aralia +sharp-tailed grouse +cigar smoker +bandoneon +Chinese alligator +crazy +point lace +charcoal +Texas horned lizard +marinara +backstay +Gatling gun +piston +game fish +fall armyworm +grammarian +beer hall +guadalupe fur seal +sugar palm +peanut +velvet ant +light machine gun +rya +cling film +adobo +myrtle oak +angelica +balsam apple +windbreak +brother-in-law +snap brim +automobile factory +clavichord +dusky shark +edible banana +altar boy +California lady's slipper +schoolbag +wax bean +Atlantic walrus +bullpen +straw wine +thatch palm +potluck +tamarind +charcuterie +sod house +tie rack +liebfraumilch +clinician +scarlet lychnis +Spanish iris +bread knife +water oak +bedpan +Angolan +bassarisk +Alaska fur seal +African wild ass +milk float +froghopper +Verpa bohemica +water cooler +chop suey +ranker +red helleborine +Prince of Wales +marmalade tree +car train +giant red paintbrush +desert sand verbena +right whale +baron +stevia +asterism +five-spot +catapult +Silex +fiberscope +refresher +beef Bourguignonne +snood +divot +waterproof +crabeater seal +Missouri primrose +bumper guard +rock opera +Lilo +coffee can +smokehouse +buffalo grass +propjet +ice tongs +poop deck +acorn barnacle +veal parmesan +shower room +collins +ringhals +silage +jawfish +trouser cuff +contour feather +songstress +rachis +White Russian +stanchion +mastaba +flatbed press +viand +legal representative +espalier +organic light-emitting diode +sushi +scorer +haricot +pinna +plectranthus +jungle cat +dried apricot +coach horse +white fringed orchis +veal cordon bleu +bath +dallier +marching order +donkey jacket +Panama tree +aerator +klaxon +pinnacle +shouldered arch +lesser celandine +common eland +Grand Marnier +cock of the rock +phlomis +Japanese umbrella pine +morning room +dead-man's-fingers +little auk +bascule +house paint +home fries +great skua +cesspool +flying gurnard +wild crab +checkerbloom +Wollemi pine +cheese dip +coif +charwoman +tea ball +waif +Arctic ground squirrel +parishioner +stabilizer bar +potentiometer +black cohosh +medlar +willow oak +cascara buckthorn +scoutmaster +Canada lily +poppy seed +paper mulberry +blackthorn +garrison cap +inductee +aeschynanthus +interior live oak +black spleenwort +wild service tree +sling +nicad +swab +sego lily +eiderdown +fruit cocktail +pallasite +weeping spruce +shiv +sea lamprey +coachman +half binding +American white birch +gainer +Concord grape +yellow birch +fucus +common room +io moth +red osier +crucible +galangal +salmagundi +pepper steak +cap opener +swizzle stick +tomato juice +Nobelist +Sarawakian +African monitor +sleeping beauty +stereoscope +curd +pyramid bugle +applejack +dosser +rake handle +pilot light +Eames chair +Scotch and soda +bell heather +dinette +blackpoll +dogie +sound camera +cattle guard +mashie niblick +edible cockle +monocle +steak tartare +partaker +sidesaddle +communications satellite +porkfish +water hemlock +drawbar +ultramicroscope +Jamaican cherry +craftsman +lovage +common apricot +drum majorette +backsword +smooth alder +Amniota +dribbler +theosophist +dolman +ivory tree +Green Beret +pipe smoker +mayoress +mignonette +crampon +henbane +kirtle +death's-head moth +instep +great St John's wort +lorry +black-necked cobra +ball carrier +Jordan almond +byway +earless lizard +marble +andiron +high-protein diet +buzzer +ice floe +crankcase +Bofors gun +sockeye +veery +Delaware +caravansary +prairie coneflower +star apple +suiting +cot +call forwarding +American gallinule +glossy snake +rose chafer +instant coffee +placket +Tarahumara +pulsar +philodendron +orange tortrix +cypress spurge +Welsh rarebit +music box +giant crab +vanilla bean +water thrush +prayer shawl +gouge +promoter +dagga +black currant +bitter cassava +drain basket +snare +digital audiotape +retainer +olive drab +gluten bread +graham cracker +cheddar pink +caregiver +spray paint +Anglo-American +boatyard +backbencher +Link trainer +bell arch +weir +arbor +millionairess +sour cream +earthtongue +crawlspace +crossjack +balalaika +crupper +western redbud +guinea hen +rangeland +gaboon viper +common louse +single-leaf +horseshoe +balsam poplar +triskelion +jack-in-the-box +jester +rain stick +glove compartment +imperial moth +Japanese beech +biotin +turnip +oligarch +western skink +mudguard +retsina +data system +green bristlegrass +visiting professor +beaded lizard +weathercock +Sloppy Joe +high tea +lightweight +record sleeve +cooler +nodding onion +pigs in blankets +torque converter +district attorney +bunting +orrery +radiator hose +common plum +wood spurge +calamus +chicken Kiev +pin +lath +telephone bell +thistledown +audiotape +gypsy moth +snuffer +pari-mutuel machine +peanut butter +hearthrug +sack +Old World yew +chives +stovepipe +xenolith +mattock +mangle +electric chair +backup system +Empire +blackwash +dodder +Allegheny chinkapin +finger plate +junk +brown rice +wild angelica +chinaberry +mason +rasp +den +violet wood sorrel +nosewheel +plenum +merino +kirtle +Igbo +ensign +sex symbol +Belgian endive +sugarberry +yellow salsify +purple emperor +atlas +African clawed frog +leatherjacket +midwife +sac fungus +European cuckoo +three-day event +Mexican poppy +wagon tire +armyworm +rain gauge +Oregon ash +columbarium +spectrophotometer +Milanese +pointing trowel +casualty +Eastern hop hornbeam +lobe +mouthpiece +au pair girl +giant water bug +Browning automatic rifle +laser-guided bomb +drone +white alder +cockleshell +mufti +gravy +berm +boat hook +marshmallow +pet shop +cowpea +tactician +wading pool +anchovy dressing +flip +shackle +Wedgwood +thick-billed murre +erecting prism +giant salamander +sleeper +quiver +chain store +wing tip +New World tapir +witches' butter +gendarme +ginseng +common maidenhair +graduate nurse +balsam pear +hoatzin +philanthropist +axle bar +gas meter +moth mullein +ragbag +Chinese cabbage +celery stick +rutabaga +scalpel +cape marigold +variometer +argali +brig +shuffleboard +wort +Orlon +epiphyllum +allice shad +coffee filter +solar telescope +Japanese linden +thinning shears +golden wattle +queen triggerfish +millinery +surfbird +flame fish +clove +dicamptodon +red-bellied terrapin +turmeric +baya +air horn +Indian coral tree +punnet +sharkskin +water crowfoot +bight +desert iguana +Texas toad +volva +dredge +Turkey red +chemical plant +gemma +dice cup +orange marmalade +mistletoe +surveyor +frozen orange juice +pallette +poultryman +burbot +courlan +captain +saddlery +bodyguard +dwarf tulip +black ash +pulse +nailbrush +tickseed sunflower +legless lizard +shirtwaist +polling booth +chickeree +garlic chive +common thyme +multichannel recorder +screw thread +sangoma +calliopsis +geoduck +colleen +bandicoot rat +pastis +swamp sunflower +scorekeeper +Honduras mahogany +Australian pitcher plant +triangle +elevator shaft +green pea soup +carrel +prairie aster +bird's-nest fungus +scarlet clematis +gook +mescal button +carcase +mulatto +ejection seat +strawberry daiquiri +goat grass +car battery +babu +chief of staff +monilia +Siberian crab +ridge rope +Morchella semilibera +nutmeg +moosewood +graham bread +California four o'clock +zwieback +velvetleaf +abelmosk +shadow box +corned beef hash +newsreader +backstairs +cutwork +sherbert +tooth fungus +angel-wing begonia +greasepaint +common milkwort +potato vine +CD drive +crepe de Chine +sporting man +koto +armet +barking frog +celeriac +drainage ditch +black box +steel blue +clotheshorse +corn speedwell +drawknife +spritsail +vichyssoise +modeler +pocketcomb +limey +suslik +cockpit +digester +brig +raita +troll +benedictine +rock wren +lock +Barnaby's thistle +school bell +school ship +Soave +falchion +swaddling clothes +terrine +smoke screen +rivulus +sweet lemon +cullis +bustier +peppermint +Philadelphia fleabane +Hampshire +active +charnel house +face guard +Quebecois +facilitator +tongue depressor +bitternut +heath aster +sapodilla +bluestem +centrist +Canterbury bell +needlenose pliers +groats +tapa +Qatari +paper feed +tilt-top table +plastering trowel +brazil nut +rotogravure +patriot +manicurist +bacon and eggs +puffbird +lightweight +golden willow +kaiser roll +duff +girandole +seaside daisy +Kurdistan +Skivvies +showboat +fire bell +lock-gate +greater masterwort +weald +ice ax +toetoe +mess kit +bucking bronco +black turnstone +backscratcher +backpacker +basement +marbleization +trigger +satsuma +fall-blooming hydrangea +mountain lady's slipper +yellow oleander +crookneck +ex-president +Venn diagram +psaltery +bulwark +old boy +linear leaf +aril +butt weld +fall webworm +pruner +bald-faced hornet +nougat +tailgate +field speedwell +potsherd +center punch +long beech fern +desert paintbrush +canyon treefrog +bushel basket +Eurasian +swamp horsetail +cryptanalyst +wicket +school newspaper +captive +spider brake +electric mixer +tumbleweed +mason wasp +sash window +paddock +wet bar +oxtongue +stevia +wheat rust +scute +switch engine +mud dauber +dotterel +snailflower +common barberry +mulligatawny +cinnamon bark +cigar box +trivet +proof spirit +cream soda +western grey squirrel +baby powder +Bren +Japanese yew +sailcloth +Basket Maker +bannock +basidiocarp +aphelion +erect bugle +limiter +bosc +Przewalski's horse +helmet orchid +audiometer +battle cruiser +grass widower +staphylococcus +Congolese +common pitcher plant +parliamentary agent +Virginia snakeroot +mockernut +Siberian elm +backbench +rough +chervil +chlamys +nationalist +galantine +screwdriver +falsifier +cancerweed +spur +jerkin +porte-cochere +dill pickle +Montagu's harrier +tetrode +true fungus +American quaking aspen +vitamin B1 +leopard lily +eggdrop soup +aurochs +core bit +Jaws of Life +trousseau +parquetry +Disciotis venosa +tender +beef goulash +vitamin K1 +pepper spray +covered smut +hook +sports announcer +weapons carrier +foxtail grass +sloe gin +mezereon +antifouling paint +pavior +pile driver +security consultant +monkey-wrench +Indian hemp +amaretto +American wistaria +A-line +market strategist +rainbow runner +souvlaki +binturong +stiletto +gastrula +Vietnamese +Old World hop hornbeam +cold cathode +pier table +houndstooth check +prop root +leaf-footed bug +sedge wren +Dutch iris +drop curtain +opossum rat +lame +pollen tube +doubletree +compression bandage +pinon pine +catmint +pier arch +kingmaker +deanery +loofah +fullback +fencing mask +flying boat +carpet sweeper +lemon-scented gum +Accipitriformes +kit +pigfish +clipper +dolmas +lesser centaury +blood agar +water violet +raw milk +lemonade +vicar-general +supply closet +Anzac +confectioner +ignition key +velvet grass +white willow +John Dory +ruddiness +wheel +common horsetail +hubbard squash +speculum +Spanish bayonet +mountain mint +glint +foxhole +housemate +bootjack +sleigh bell +clog dancer +Mexican mint +rendering +Hausa +star saxifrage +spring squill +clothesbrush +liquid metal reactor +Columbia tiger lily +sorrel +cartwheel +Jersey +Caucasian walnut +desert willow +surveyor +elbow +Santa Gertrudis +fringe bush +industry analyst +lyrebird +Cortland +arroz con pollo +catechist +tank top +jew's harp +cereal oat +heartleaf +short sleeve +butty +butterfly plant +stud finder +felloe +beer garden +clevis +wood warbler +demerara +cornetfish +mince +Jamaica rum +Spanish broom +binnacle +camise +ferrule +Copt +hall +minicar +scimitar +cryptogam +miter box +limestone fern +Marsala +Parliamentarian +gravy +woolly bear moth +formula +squash bug +pigmentation +plate +skin graft +radiotelegraph +hellbender +soft pedal +lavender cotton +propagator +Bailey bridge +cottage pie +rotgut +A battery +pintle +off-line equipment +European swift +shrimp butter +plumb bob +trunk lid +succotash +yellow cypress +heartleaf +antelope squirrel +sambar +maternity ward +deciduous plant +bartlett +Riesling +sour cherry +Klansman +poke +academician +sociolinguist +bird's nest fern +common privet +scale fern +tachograph +oyster stuffing +pusher +green June beetle +staghorn sumac +lockage +master +bap +harlequin +blackfly +spotted coral root +kahikatea +cabana +riot gun +apple mint +kob +praline +confidant +pahautea +float +city father +Zen Buddhist +pessimist +conference center +banksia rose +comfit +sweet cicely +winged bean +henroost +myope +bunt +nailfile +yellow mountain saxifrage +cruise control +abandoned ship +water chinquapin +spanker +wing nut +puccoon +pier glass +Atlantic sailfish +medlar +buttercrunch +rough-skinned newt +planter's punch +Dutch iris +control key +committeewoman +torpedo-boat destroyer +garambulla +tree heath +gladiator +September elm +inclinometer +snowbell +call-in +sunsuit +microfiche +bluestocking +cheval glass +server +franking machine +sugar syrup +Macoun +transport ship +alderfly +wash-and-wear +Abbe condenser +bush nasturtium +wild leek +canary seed +Northern Baptist +sweet wormwood +jaboticaba +cardroom +autoradiograph +ash-pan +sprinkler system +rattrap +claymore +parts bin +forest red gum +thermonuclear reactor +Indian crocus +lector +heir apparent +leafy spurge +masquerader +varicella zoster virus +cucumber tree +hedger +Shumard oak +zooplankton +quartermaster +arrester +bridge +hop clover +meadow foxtail +winter hazel +portable circular saw +penuche +limpa +blue toadflax +mesophyte +Alpine anemone +pet sitter +avocado +streptococcus +fiber optic cable +river red gum +hornist +chicken taco +red spider +tape grass +densitometer +salmonberry +tiger snake +hot toddy +silver fern +candlenut +buckram +local call +defoliator +king +mahoe +lever lock +social insect +winter purslane +bootblack +fireball +ramie +bellbird +prepuce +capote +Chinese forget-me-not +Pisces +costume +California black oak +tree lupine +golden polypody +liger +California whipsnake +urodele +sapodilla +skillet bread +duckpin +supremo +asparagus bean +kampong +endameba +cow pony +rider +motherwort +Persian iris +soursop +kohlrabi +Parisienne +irons +doubles +feijoa +farmplace +cottage cheese +bezoar goat +subcontractor +blunderbuss +down +purple martin +Lapp +crenate leaf +tobacco pouch +beach towel +Santa Lucia fir +monetarist +stringer +ocellated turkey +Texas purple spike +ackee +caddy +hedge mustard +second-rater +strawberry bush +valedictorian +steak sauce +prairie gourd +aspirant +mint +Valenciennes +vodka martini +American persimmon +big brown bat +Mycenaen +mouthpiece +norfolk island pine +pennyroyal +Jewish rye bread +granadilla +tract house +wall +shuttle helicopter +blackjack oak +Lippizan +storm window +white zinnia +sickle +sushi bar +polish +baldric +brooklime +church hat +control circuit +vicuna +death adder +eukaryote +durmast +field soybean +jacket potato +wild basil +queen consort +brooklime +octant +blue false indigo +broccoli raab +step-down transformer +date bread +blue ash +duffer +oak chestnut +pennant +wedge +Florentine iris +morion +weakfish +morning dress +public address system +spearmint +Ashkenazi +sow +interpreter +Metis +pita +iron lung +parfait glass +cylinder lock +immortelle +obstetrical toad +tee hinge +successor +western +working girl +julienne +AND circuit +spaghetti junction +fer-de-lance +enlisted woman +star +lightning rod +bilge pump +pacer +horse nettle +African oil palm +blastocyst +air hammer +bamboo fern +remote terminal +lambkin +money cowrie +Pelham +clinical thermometer +wiggler +guru +false indigo +tea bag +foredeck +king +baby shoe +mule +grab bag +silver-bell tree +knitting machine +cobia +roulette ball +larder +button pink +rumble seat +noria +queen mother +solar thermal system +aquaplane +highbrow +rusty blackbird +desktop +lima bean +pontoon bridge +watercress +wild cabbage +tumbleweed +dressing sack +compact-disk burner +spittoon +marrow +sporophyte +second fiddle +pot-au-feu +specialty store +dry +mole +khadi +japonica +lovage +squamous cell +lobe +European creeper +brown pine +bladderpod +rumble +French Canadian +mascarpone +Pacific halibut +perennial ryegrass +wine lover +turbot +longwool +silver tree fern +dust cover +synchromesh +corn pudding +alpine azalea +garboard +cane sugar +observation dome +condensation pump +hind +taximeter +hand drill +gas thermometer +jammer +buffing wheel +handstamp +prairie mallow +turkey stew +sun spurge +duck pate +kibble +Cassin's kingbird +apadana +Devon +grinner +oocyte +blank +header +schoolmaster +guard ship +intravenous pyelogram +rimu +luff +Mediterranean fruit fly +singlestick +lady-in-waiting +curb +birch +limekiln +orthoscope +serotine +Spanish oak +swamp cottonwood +edger +city man +picnicker +white basswood +Parsons table +Christmas begonia +perspirer +Pacific tree toad +Cape tulip +finger bowl +blue pike +greengage +handcar +milkweed +potbelly +river dolphin +creel +typewriter carriage +banteng +pawnbroker's shop +huon pine +biennial +man of action +foundress +caveman +featheredge +jordan almond +sandblaster +coralberry +low-calorie diet +hoot owl +garter +bain-marie +wrecker +fenugreek +double-hung window +idol +scullery +balloon vine +summer savory +winged spindle tree +Helvella crispa +walrus mustache +gas engine +boulle +rush grass +rue +hoe handle +cat fancier +deerstalker +dunker +American red plum +fall dandelion +groover +sprag +stair-rod +wish-wash +pricket +architrave +California laurel +net melon +Arizona sycamore +executive secretary +silverweed +silky cornel +surface ship +square sail +common purslane +villa +holly-leaved cherry +sweet birch +pecan +artillery shell +breast pocket +pirogi +scarlet runner +rabbit brush +mealworm +leather carp +palette knife +Jerusalem sage +boneshaker +slit lamp +digital voltmeter +polar glacier +square-rigger +homogenized milk +Sten gun +lesser calamint +pyrograph +Korean lawn grass +Zinfandel +crepe fern +western ragweed +clasp knife +distributor housing +cartouche +scooter +ski parka +jackknife +Carolina spring beauty +soft diet +candlesnuffer +horse trader +step stool +agouti +accelerometer +annual fern +judge advocate +angelica +roll film +treehopper +ombu +comer +sultanate +kitchen help +hooded ladies' tresses +milking machine +knuckle joint +Jamaica honeysuckle +music teacher +sauerkraut +Weston cell +slivovitz +Worcester sauce +tall bellflower +chancery +prophetess +casquet +shortfin mako +sorus +visual display unit +asp +grenadier +black pepper +crottle +erasable programmable read-only memory +jabot +ratchet +disk controller +chief petty officer +tap wrench +white mountain ash +cultivated rice +flying phalanger +skillet corn bread +BB gun +Elamite +European red elder +reed rhapis +ciderpress +inga +torpedo +wild teasel +bean curd +oeil de boeuf +acuminate leaf +bitter lemon +hitchrack +Lorraine cross +hostess +European dogtooth +adz +polonaise +rock sandwort +Waldorf salad +myrmecophile +klystron +mole rat +draba +corn borer +robusta coffee +chub mackerel +leatherleaf +chronometer +Moselle +sea aster +fennel +slop basin +constable +Brunswick stew +hydraulic pump +French omelet +icebreaker +Manx shearwater +press of sail +ninepin +blue succory +bootstrap +hallstand +chit +firefly +bearded seal +fuel filter +jezebel +mate +Roquefort +cheesecloth +plasterer +blue pimpernel +lake dwelling +shrink-wrap +goat cheese +common gum cistus +coastland +Sunday best +wild tobacco +mandrake +common unicorn plant +barbican +culotte +blockhouse +German iris +tarragon +caramel +wild rosemary +grain +voyager +squirting cucumber +eastern narrow-mouthed toad +creeping fern +luge +saffron +garland flower +furnace room +starship +Oriental scops owl +Italian honeysuckle +berserker +Chinese elm +scrubber +bishop pine +French polish +compromiser +skimmer +river shad +lobster thermidor +leadwort +man-of-the-earth +razorblade +vicegerent +empress +link +ham and eggs +wild lily of the valley +blackfish +splicer +fossa +mara +moneygrubber +brachiopod +fauteuil +caldera +finish coat +croupier +termer +leopard's-bane +sei whale +molucca balm +dolly +dog food +term infant +soft roll +episcia +sewer +inquiry agent +active citizen +perry +California newt +moon shell +bladderwrack +common shrew +dill +Dutch elm fungus +key lime +electrometer +divorce lawyer +lamb's-quarters +apple turnover +shipmate +Guernsey +legionnaire +electric blanket +Rocky mountain pinon +tobacco mildew +stinking iris +forestiera +departure lounge +wiper motor +jurist +scarlet runner +pallbearer +batter's box +inertial guidance system +fines herbes +oilcan +sisal +mustache cup +steamed pudding +Visayan +fiesta flower +lady tulip +lungless salamander +batiste +electrical system +blazing star +car carrier +Walloon +mother hen +stump +mulled cider +secondary coil +Alexandria senna +etui +scrumpy +Havasupai +jawbreaker +glume +ex-husband +Eskimo +Joint Direct Attack Munition +number theorist +five-hitter +pinstripe +Olympian +common mackerel +stone bass +bigos +Bahraini +airbrush +great ragweed +glass lizard +hand fern +roundel +riding master +shoetree +yellow avens +old fashioned +dolman +stinger +nursling +legate +faille +golden fern +bedpost +shop steward +kidney bean +bladderwort +internist +limeade +Bruneian +Coloradan +playsuit +wintergreen oil +Cantabrigian +mutton snapper +shot putter +hand grenade +moccasin +cobnut +marrow +separatist +cockscomb +discharge pipe +Gabonese +spade bit +chicken cordon bleu +varnish tree +European wood mouse +striped gentian +Ayrshire +curassow +moo goo gai pan +malarial mosquito +glow tube +ledger board +bib-and-tucker +European chestnut +suffragette +color wash +gaffsail +golden larch +voting machine +Kahlua +lungi +amusement arcade +Uzbek +butternut +mold +mule's ears +dickey +shrimper +trophozoite +dreadnought +shepherd's purse +greenhouse whitefly +spotted gum +copperware +perfect game +semigloss +spawn +telecom hotel +stakeholder +mason wasp +flibbertigibbet +chin strap +fringed pink +saki +urchin +memorizer +roulade +whiting +cling +corncrake +Queen of England +choo-choo +empty +heating pad +playmate +visualizer +popcorn ball +absconder +sou'wester +target acquisition system +mock-up +dental floss +tray cloth +haddock +bulblet fern +housing commissioner +delayed action +anchor light +harbor porpoise +water wings +PT boat +night latch +fennel +doorframe +green-tailed towhee +grey polypody +torture chamber +American germander +Chinese wistaria +cattalo +accompanist +rifleman +alpine clover +contrarian +lemon peel +Mexican cypress +sprog +dado +Galilean telescope +desmid +lockup +Latin +American raspberry +mescal +butternut +prairie orchid +downy yellow violet +green hellebore +radio compass +bread and butter pickle +Cherokee rose +knish +destroyer escort +Arkansan +langlaufer +pyxis +winter savory +velocipede +motley +winter savory +law student +barren ground caribou +apple dumpling +field hospital +works +city editor +European flatfish +Morchella crassipes +life office +boot camp +cream sauce +cape aloe +acetate disk +devil ray +tile cutter +Plymouth Rock +microspore +godown +Syrian +tiercel +American cranberry +lesser spearwort +anopheline +Spanish oyster plant +wire cloth +attic fan +birch beer +small computer system interface +crook +ribbon fern +explorer's gentian +nagami +I-beam +rosebud cherry +Jerusalem artichoke +Stillson wrench +pluralist +district manager +Levantine +orangeade +part-timer +post horn +Oregon grape +contadino +cargo helicopter +silverpoint +chaja +California bluebell +case +Shasta +cheese cutter +Leishmania +avalanche lily +iron horse +bialy +Yana +Delawarean +Prussian +nonpareil +hammer +hoper +chewink +anil +skim milk +desert four o'clock +crescent wrench +white marlin +blue jasmine +malacca +anadama bread +purple poppy mallow +ganglion cell +ligature +no-parking zone +golden clematis +Cotswold +aliterate +shebeen +yardarm +superbug +fanaloka +stinking cedar +spirochete +wort +pater +heaume +thermocouple +ironing +naval tactical data system +European goatsucker +prairie cordgrass +accused +foreign agent +halberd +western mugwort +esthetician +Persian lilac +cracked-wheat bread +crosscut saw +rock penstemon +paper cutter +crematory +ideologist +cattley guava +margarine +creosote bush +hoary plantain +spark gap +lumberjack +Greek valerian +mission bells +tight end +bigeye +large crabgrass +stone marten +cleat +lentil +bay scallop +lector +charger +assemblywoman +second lieutenant +boil smut +sarsaparilla +hydromel +cat flea +pinfish +whole milk +hairnet +myeloblast +peasant +blind curve +first offender +dwarf-white trillium +Brother +coatdress +gun emplacement +tamarisk gerbil +snap +air cushion +trailing edge +potato vine +gig +everlasting pea +champion +dibble +rattail cactus +timothy +prince's-feather +cutlas +lockring +sealing wax +Brussels lace +corn mint +highboard +she-oak +wild celery +pillar +Burberry +Hakka +leucothoe +bell tent +gallery +coontie +leather fern +smack +adenovirus +linoleum +chain wrench +tammy +gas fixture +nut bar +baneberry +butterscotch +goat's rue +bullock +grey snapper +mother-in-law +hyson +wayfaring tree +mollie +needle spike rush +buckwheat +bayberry +brush-tailed phalanger +dry rot +harborage +stormy petrel +Oriental beetle +Atlantic halibut +coping saw +simple fruit +viscose rayon +surgeonfish +upstairs +security system +common ragweed +verticillium +pancake batter +hawk's-beard +Dutchman's-pipe +refrigeration system +European parsley fern +Ivy Leaguer +totalitarian +gonococcus +towhead +showy sunflower +pallium +multiengine airplane +hair trigger +rabbit-eared bandicoot +siskiyou lewisia +fuel system +flat arch +broad beech fern +Alpine lady fern +bracken +Kentucky black bass +rut +mountain maple +tunaburger +umbrella fern +white-headed stilt +meat hook +panhandler +washhouse +barnyard +safety lamp +leg +ripple mark +paper +sagebrush lizard +light heavyweight +common nutcracker +operator +stalking-horse +horseless carriage +fishhook +suction cup +peg +Ungulata +false teeth +round-bottom flask +Luba +campaign hat +firebox +rudder +parapet +ice pack +appellant +spirit stove +metheglin +common bamboo +soapwort gentian +pannikin +time capsule +burn bag +folk poet +tropical prawn +end man +new caledonian pine +linen +web +free trader +jury box +railing +pignut +leaker +potboy +rubber boa +white snakeroot +plumber +Candida albicans +surfboat +woman +promulgator +eyecup +wild China tree +rattlesnake master +Viyella +alpine salamander +ailanthus silkworm +Albatrellus ovinus +war room +meadow vole +robotics equipment +rotary actuator +Engelmann spruce +pinesap +beefcake +native speaker +ridge +injector +water chute +salmonberry +decoupage +bottlebrush +date plum +circlet +American mountain ash +pocketbook +horsemint +sweet four o'clock +kirpan +pinto bean +chervil +equator +range animal +candy thermometer +calanthe +cul +stipendiary +brahman +pelican crossing +topgallant +wild senna +sliding window +carrier pigeon +Tatar +quadruplet +bumboat +spearmint oil +slip clutch +young Turk +golden yarrow +shank +glasswort +dental plaque +Manduca sexta +Northern bedstraw +dent corn +Life Saver +western wall flower +bedder +wherry +Tuscarora +scrapple +borstal +reflux condenser +problem solver +nondriver +perforation +eastern cricket frog +white wood aster +broad buckler-fern +Cape primrose +herringbone +head louse +earl +baton +recording system +primary color for light +cherry laurel +pomfret +ratafia +chocolate milk +obscurantist +revisionist +rood screen +magnetic needle +commensal +oil tycoon +celebrant +domicile +harvest mouse +California nutmeg +greater spearwort +black-billed cuckoo +winepress +demographer +straw boss +diabetic diet +sweetmeat +rabbet +ming tree +basketweaver +freestone +walk-in +Aryan +box coat +audio amplifier +chicken salad +churidars +whydah +box +batman +siren +selectman +gouger +drip coffee +Caesar salad +interpreter +whinstone +grey goldenrod +minicomputer +honey crisp +hypercoaster +Irishman +swamp white oak +reed canary grass +globeflower +cynthia moth +fennel seed +canthus +chino +blind date +tar pit +watermelon begonia +fishtail palm +overcast +Pearmain +primary color for pigments +coal seam +wherry +safety bolt +cretonne +Michigan lily +inflater +moneybag +huckleberry +brassard +bush vetch +looking glass tree +pinwheel roll +alfalfa sprout +sea kale +clinometer +achira +lorgnette +potter wasp +gilded flicker +tody +capulin +captain's chair +crackle +gerardia +prie-dieu +venture capitalist +New Jerseyan +block and tackle +elf cup +bur reed +automatic transmission +wax palm +flytrap +crack willow +coachwhip +swizzle +lugger +Dewar flask +baster +oxyacetylene torch +Culex quinquefasciatus +St Peter's wort +wild hyacinth +Russian almond +burrfish +wintergreen +katsura tree +butcher knife +perfumery +thresher +porte-cochere +sheepwalk +hypotenuse +Dalmatian iris +buttercup squash +demiglace +goldenseal +preceptor +rigger +poikilotherm +old-age pensioner +posthouse +wood horsetail +repeater +reciprocating engine +Rambouillet +terra cotta +togs +battledore +horizontal tail +missile defense system +trier +morello +woolly adelgid +munition +double creme +in-fighting +squirrel corn +crow's nest +antler moth +brake cylinder +bandoleer +noticer +Parmesan +hipline +cheapskate +Dubonnet +mole rat +bog aster +ribbon tree +meadow rue +nard +ratel +loose smut +snapping shrimp +golden glow +basil thyme +Florida strap fern +moonshine +flume +lace fern +black bream +orchestra pit +archerfish +exile +ringdove +career man +godfather +bottom-feeder +pasteurized milk +dental implant +pedicel +Catalpa speciosa +yellow foxglove +lancet arch +steam shovel +sampan +patrol boat +sailor cap +tollgate +monal +velociraptor +cacique +jack oak +cursed crowfoot +creep +Parry manzanita +common matrimony vine +grace cup +caecilian +spurge laurel +prickly lettuce +Regius professor +camail +Sitka willow +Courtelle +gin sling +dogmatist +guest +saltine +dust cover +sport +sweeper +feist +lady's-eardrop +vibist +wire stripper +tenpin +interplanetary space +beet green +pruning knife +drainage system +gunnery +ballet master +lime juice +flak catcher +lacrosse ball +Canadian aspen +beatnik +railhead +utilizer +spadefish +Arizona white oak +city university +dense blazing star +hedger +chain pickerel +right-hand man +namby-pamby +nacelle +redneck +tumbler +Chief Secretary +cannon +cupola +kummel +papaya juice +Burton +Stanley Steamer +loganberry +stylus +square meal +rock bass +western ladies' tresses +dramatist +assignee +tandoor +trumpetwood +segregator +green adder's mouth +coral necklace +ani +iceboat +densimeter +oxtail soup +kernel +cos lettuce +greenishness +panchromatic film +Parker House roll +oatmeal +backsaw +double Gloucester +bailey +storage cell +giant +coconut milk +broadtail +barouche +loir +soybean meal +white-leaved rockrose +junction barrier +spandrel +sweat bag +goldilocks +flowering wintergreen +cockspur +beef fondue +holding cell +cardamom +cagoule +Kamia +tangelo +Herschelian telescope +wine bar +kachina +sand sage +guy +ivory palm +citrus mealybug +topper +ladyfish +force pump +fanion +calaba +Iowa +orrisroot +ivorybill +Secretary of Agriculture +gagman +dry cell +hypnotist +kenaf +grey alder +deathwatch beetle +gagman +magnetic stripe +trap door +abdominal wall +prefab +broomcorn millet +architeuthis +angler +Pacific giant salamander +barbette carriage +low-fat diet +veal scallopini +B battery +wallah +landing flap +pistachio +jaguarundi +nagi +cicerone +felt fungus +Aertex +stocks +smooth aster +patchouli +lemon sole +sleeper +basket fern +dundathu pine +anjou +Moreton Bay chestnut +broom sedge +candid camera +red angel's trumpet +oilstone +cinnamon toast +Pacific walrus +fruit custard +Jehovah's Witness +mate +voyeur +Esselen +achromatic lens +sanguine +brine shrimp +dunce cap +swot +transit instrument +grey willow +pack +bench clamp +Nova Scotian +gadgetry +silvery spleenwort +enchantress +rough fish +morula +giant taro +sorus +roux +polyhedral angle +spruce beer +Chicano +cola extract +outfielder +kohleria +white-rumped shrike +car-ferry +subway token +spoon bread +totara +corn borer +bowhead +tensimeter +water scooter +flickertail +Catholicos +pleaser +blue-eyed Mary +calabash +handyman +cascades frog +facing +scarlet oak +lutist +ginger +tree tomato +Harvey Wallbanger +tent peg +insectivore +fusil +swale +chinning bar +bladderpod +New Dealer +dhoti +proscenium arch +common vetchling +channel +collect call +safflower +Texas tortoise +test equipment +theca +RAM disk +sheep sorrel +rammer +buttonhook +honey mesquite +dominus +babirusa +queen +Aspergillus fumigatus +crash barrier +nonmember +Muscovite +verdin +Australopithecus afarensis +Turkish Delight +stalked puffball +giardia +divider +mountain skink +head smut +pacemaker +evaporated milk +rattlesnake fern +flamethrower +navy bean +bather +steed +showy orchis +stone crab +artichoke heart +phantom orchid +space helmet +swamp laurel +privateer +junior +surcoat +bristlegrass +flower girl +aphid lion +penthouse +lemonade mix +coude telescope +natal plum +scriber +wood nettle +rape suspect +resplendent quetzel +western poppy +choir loft +fore-topsail +thyme-leaved sandwort +erotic +short circuit +outdoors +flowering tobacco +hookup +aviatrix +corker +horehound +horn +swamp pine +water biscuit +cherimoya +vaporizer +courtier +European sole +full skirt +Mother Carey's chicken +cymule +huck +white snapdragon +mountain nyala +country borage +bonduc +casein paint +grampus +shrimpfish +lodge +dragee +black walnut +caraway seed +roper +glass cutter +tab key +Richardson's geranium +demigod +chichipe +Italian ryegrass +cadet +electrograph +rudd +carpenteria +foie gras +lignum vitae +hedge nettle +pledger +American hackberry +flageolet +beaked hazelnut +reflectometer +sticky geranium +marriage bed +white pepper +japanese clover +whiteface +gnat +extrovert +Canada plum +talipot +chicken stew +egg foo yong +fraxinella +skibob +saucer magnolia +jacket +green smut fungus +cloakroom +landing skid +booth +ice milk +dipole +striped coral root +red buckeye +roughcast +breaststroker +cowherb +razor clam +first-aid station +briarroot +clambake +lander +Bramley's Seedling +frail +jird +minisub +luging +poison milkweed +European lobster +epidemiologist +spandex +paloverde +marumi +bypass condenser +punter +petty spurge +Coryphaena hippurus +bilberry +vermillion rockfish +witness box +viscometer +pulque +Massachusetts fern +herring salad +ridge tile +mesa +dwarf grey willow +southern aster +punch pliers +tarnished plant bug +hoop pine +Japanese red pine +benedick +rebozo +silver plate +silver willow +mouse-ear hawkweed +bonito shark +abutment arch +noble cane +tiger rattlesnake +pongee +jumping plant louse +pattypan squash +giant ryegrass +railroad bed +stiff aster +imperial Japanese morning glory +laundry +winter cress +large white petunia +tea maker +pen-and-ink +early warning system +lug +monocot +sea wormwood +breechblock +postage meter +third rail +Mongoloid +Australopithecus boisei +umbrella tent +stirrer +Dumpy level +beroe +post and lintel +green spleenwort +tomato paste +dishpan +stentor +sweatband +cobbler +New York fern +gaff +prairie willow +cyclops +jigsaw +rotavirus +pallet +eastern ground snake +boiling water reactor +acute triangle +agora +European cranberry +roebuck +surgical dressing +busboy +cannikin +feedlot +common pond-skater +cochin +horsehair lichen +fetter +sapote +fichu +dermatologist +fire tongs +creme anglais +foster-mother +laurelwood +chicken snake +mincemeat +rocker +wild spinach +powder and shot +butterwort +auxiliary engine +mamey +hart's-tongue +sucking pig +American turkey oak +troopship +buttermilk +divi-divi +boatswain's chair +soda fountain +southern flying squirrel +elastic +cutaway +housekeeper +renegade +apple rust +bridoon +machicolation +stunt +keyhole limpet +personality +solitary vireo +epidendron +Jihadist +boffin +bettong +terror +partial denture +pusher +saltcellar +capstan +large poodle +Bibb lettuce +low-bush blueberry +staple +banded krait +sickroom +barnyard grass +wandflower +woodworm +bluegrass +squirrel's-foot fern +rabbitfish +delta wing +milking shorthorn +limber pine +guru +gamine +scythe +sweetsop +Gruyere +bloodmobile +mine detector +American mistletoe +silver beech +hound's-tongue +Lombardy poplar +basket fern +pink-and-white everlasting +redtail +Aladdin's lamp +mace +outtake +condensed milk +Canada wild rye +silver perch +waxflower +taxer +Chinese chestnut +Our Lord's candle +mugwump +school system +salp +osso buco +dress shirt +butterweed +low-fat milk +couchette +broomcorn +proscenium +mill agent +smut grass +humpback +southern spadefoot +military leader +canebrake rattlesnake +tailor-made +ebony +beach house +flying gecko +hoary alison +typhoid bacillus +Romanov +vanilla pudding +sweet cicely +Spodoptera exigua +dress rack +flannel +skipjack +bolognese pasta sauce +rooibos +thunderer +blessed thistle +gauntlet +mahatma +granadilla +laurel sumac +Yuma +thyme-leaved speedwell +encyclical +twill +linocut +manna gum +spark arrester +cocklebur +Indian hemp +lemon oil +Hall's honeysuckle +raceway +flop +Himalayan lilac +one-flowered wintergreen +photosphere +silvery spleenwort +convex polygon +canarybird flower +foster-sister +fluffy omelet +palanquin +roll +dandelion green +Javanese +workpiece +Carmelite +bread mold +schlemiel +wild lily of the valley +grugru +solenoid +puff batter +skep +balance wheel +Gadaba +portia tree +mobcap +two-man tent +scuffle +firebrat +ant lion +anise +caster +giant petrel +American water spaniel +naboom +treasure ship +foster-son +fiddleneck +alidade +sugar refinery +wild oat +water beetle +generic +damson plum +abrocome +detainee +pitch pipe +coast +nilgai +radiotherapy equipment +heart-leaved aster +gristmill +grocer +Appaloosa +Cheviot +brake pedal +lantana +cave myotis +Rob Roy +sea spider +latrine +carpophore +recycling plant +coondog +brace and bit +funambulist +eggar +mantelet +postdoc +mezzanine +coco plum +pulse generator +high-vitamin diet +menhaden +mechanical engineer +bergamot mint +Chuvash +grated cheese +helicon +belladonna +beet armyworm +eelgrass +resuscitator +interrupted fern +arrow grass +cistern +Pacific herring +colostrum +journal bearing +Fauve +wrist pin +canape +choice morsel +quadraphony +guard boat +shortgrass +claymore mine +hitching post +cargo door +decoder +gym rat +Cocopa +commander +apple of Peru +seckel +yellow goatfish +dog flea +dodo +oconee bells +Tudor arch +turkey stuffing +ebony spleenwort +wheat flag smut +scolopendrium +Brazilian pepper tree +gusset +inspector +lunar excursion module +baron +plantigrade mammal +Creole +phosphate +aromatic aster +ghee +audiovisual +onychophoran +cotton stainer +lieutenant junior grade +spheroid +amen corner +caper sauce +Caladium bicolor +dyer's rocket +seaside goldenrod +flint corn +Very pistol +rotifer +steeplechaser +rouleau +escape wheel +Namibian +millivoltmeter +emmer +climatologist +agateware +sea lyme grass +inclinometer +water fennel +saddle seat +vicar +garden cress +ski rack +Norfolk jacket +casaba +coast rhododendron +sericea lespedeza +hematocrit +autopilot +tilter +finish coat +Pennsylvanian +shrubby St John's wort +podocarp +percussion cap +ceriman +peanut bar +gean +jack +durra +rotor +carob +cottage tulip +three-spined stickleback +trencher +elevator +kalumpang +abaca +Australopithecus robustus +active matrix screen +water bed +hatmaker +lodestone +cat food +overcup oak +balletomane +popgun +rheometer +process cheese +frog legs +heartleaf arnica +p-n-p transistor +steam turbine +Tulu +scalene triangle +licorice fern +coffee break +trade unionist +starved aster +firing pin +water gum +Masonite +hairspring +seminarian +blue racer +forecastle +scrub pine +Atlantic spiny dogfish +kopje +orphrey +fan tracery +gee-gee +vixen +interstellar space +Harris Tweed +sawmill +lemon mint +bitewing +ringlet +Chinese mustard +paleontologist +American hazel +brigantine +clay-colored robin +zombie +nectarine +West Indian jasmine +pineapple weed +rusher +gynecologist +pole +thylacine +myrtle beech +golden cup +woodruff +T-bar lift +terebinth +service club +homegirl +Blue Mountain tea +figwort +New Hampshirite +Stayman +tonometer +white turnip +messuage +cruet-stand +colliery +connecting room +lesser twayblade +bland diet +crown prince +beggarwoman +restharrow +bower actinidia +firebug +hepatic tanager +telegraph +Spodoptera frugiperda +spackle +carpenter's square +pyx +supermom +thickhead +whorled milkweed +Arctic char +Chinese rhubarb +pince-nez +wolverine +tomato concentrate +cascarilla bark +red underwing +leather flower +Jerusalem thorn +bullpen +Salisbury steak +anode +coffeeberry +bottling plant +fritter batter +aerial torpedo +matrix +local oscillator +stalked puffball +bruin +three-cornered leek +wassail +stabling +damping off fungus +myriapod +osier +lesser kudu +cownose ray +chokecherry +wagon +obstetrician +Glengarry +even-pinnate leaf +wine sauce +osteocyte +baker's yeast +heir presumptive +blackjack +tympanist +golden fern +fipple +Japanese oak +bar mask +stamping machine +argus +knobcone pine +oil beetle +lanai +upper berth +condenser +proctologist +catechu +wild spurge +vestry +ground snake +proton accelerator +walker +scarlet bush +transom +lagging +bouillon +slender loris +black currant +developer +football hero +plum sauce +striped mullet +prince charming +fictional animal +prosimian +lug wrench +lemonwood +kirsch +spy satellite +black caraway +Thompson Seedless +bead tree +purple fringeless orchid +Virginia strawberry +chigetai +punkie +gall wasp +addressing machine +rock polypody +good-king-henry +spring cankerworm +wimple +noncandidate +saskatoon +hacienda +Darjeeling +snowberry +lounging pajama +ascospore +ski-plane +hedgehog cereus +Welsh onion +yautia +coaster brake +sickle cell +parrot's beak +fuller's teasel +painted greenling +scablands +stuffed cabbage +barrel organ +etcher +dwarf maple +camp +Australian blacksnake +currycomb +obtuse triangle +rose gum +psychrometer +abridger +torpedo +carpet loom +sodalist +slender rush +loligo +sclerometer +wimp +dotted gayfeather +green ash +pinstripe +moralist +medusa's head +garden centipede +heath aster +fool's parsley +olla podrida +Potawatomi +Edam +toothache tree +hulk +seabag +narthex +compartment +prairie star +lookdown +B-flat clarinet +event planner +clip lead +shirting +milk punch +supercharger +macadamia nut +giant coreopsis +computer store +martingale +keyboard buffer +summer flounder +squash ball +gas turbine +object ball +plier +black mulberry +reef squirrelfish +scampi +willow aster +bowler +striped marlin +smooth muscle cell +diplodocus +Liberty ship +sponge cloth +guitarfish +walking leaf +showroom +California bluebell +bolo +turnbuckle +boysenberry +hardware +Gael +imago +endorser +jujube +dust bag +rapporteur +field wormwood +low-water mark +naval missile +Pacific yew +reversible +crabapple jelly +poniard +barricade +spawner +simnel +seltzer +deckle edge +needle +timbale +satellite transmitter +organization man +job candidate +orderly +native cranberry +fir clubmoss +coaming +chartered accountant +electron accelerator +Sierra plum +American foxhound +long underwear +Penobscot +blueberry yogurt +biretta +cascara +Paranthropus +Dorian +nun's habit +lenten rose +Augustinian +designer +northern phalarope +mombin +hazel mouse +reeve +waffler +telegraphy +Verpa conica +ignition coil +Japanese oyster +S-shape +divining rod +ant thrush +throat protector +interlocutor +Desmodus rotundus +pere david's deer +attenuator +Cypriot +red sandalwood +pendulum watch +broadcloth +striped drum +sequence +safety arch +diapensia +hog +western spadefoot +chlorella +comb-footed spider +Chechen +darning needle +C-ration +hard beech +piano action +scaling ladder +Nepal trumpet flower +ravigote +screw wrench +ramekin +Lyonnaise sauce +dinner napkin +partial veil +masseuse +coatrack +mooring tower +blue-eyed African daisy +English horn +baton +rope tow +toll bridge +massage parlor +quark cheese +lounging jacket +tall goldenrod +flying jib +coordinate axis +barley-sugar +integrator +worm gear +captain +sweatshop +class +layer +chili powder +dripping pan +oatcake +newsroom +tadpole shrimp +rake +trade magazine +silks +ram's-head +senior +knower +masseur +yam +peg +wheel tree +hardbake +test room +long-spurred violet +creeping spike rush +shrapnel +coffee senna +matchbox +creeping soft grass +welder's mask +pickaback plant +urial +hooded pitcher plant +incense cedar +Ohio buckeye +ant cow +skeleton fork fern +Indiaman +swamp ash +testatrix +marang +spherocyte +Winesap +Indian mallow +teju +Yersinia pestis +dye-works +sauerbraten +coral bean tree +safe house +postulator +eyas +lotus +wood vise +lady-of-the-night +East German +cymling +rock candy +western omelet +anoa +rainbow seaperch +crossover voter +Finn +tree shrew +hog plum +Federal +shagbark +clockwork +Alexandrian laurel +metal wood +brill +military chaplain +trend-setter +call-back +Indian rat snake +spurred gentian +Japanese maple +forest goat +bee moth +viola da braccio +duckboard +armyworm +hangnail +counterbore +cream-of-tartar tree +Mullah +bonbon +water hazard +temple orange +corporatist +rough bindweed +Turkish bath +mistletoe fig +beach sand verbena +caddisworm +English plantain +brown Betty +power pack +lion's-ear +Francis turbine +stayer +dichondra +marsh St-John's wort +squab +energizer +common horehound +mantispid +pullback +handwheel +spark arrester +yakuza +Virginian witch hazel +grunter +waterworks +bondwoman +chain printer +stockjobber +coconut milk +yardgrass +blue chip +bridle path +riser +pleurothallis +saltwort +salal +broadside +blackboard eraser +bastard +Para rubber tree +red bat +digital-analog converter +calabash +cashier +cow shark +horned pout +microphage +monologist +woolly monkey +Illinoisan +marsh horsetail +distaff +siris +eparch +gooseneck loosestrife +sounding rocket +multiprocessor +saiga +xerographic printer +madrona +right triangle +sweet gale +red maids +wolfsbane +pork-and-veal goulash +French sorrel +mutterer +Venetian sumac +drumlin +white crappie +squire +large-flowered calamint +northern cricket frog +mushroom sauce +supertanker +morello +auxiliary boiler +Virginia thimbleweed +cottage tent +bubble shell +big shellbark +wormwood sage +cider gum +coast lily +American feverfew +Peruvian balsam +purple silkweed +tobacco moth +desk dictionary +rock elm +eastern indigo snake +Japanese privet +lamb +levee +L-plate +soapfish +painted tongue +scuttle +markhor +Marburg virus +mackinaw +major +crypt +ball and chain +domestic silkworm moth +bottom feeder +mistress +death house +freight elevator +bellyband +Pulex irritans +Bacillus anthracis +fire control radar +hysterosalpingogram +turbogenerator +decompound leaf +vambrace +scentless camomile +Medinilla magnifica +prima ballerina +Northern Spy +quartz lamp +grains of paradise +justiciar +felt fern +seismograph +Madagascar jasmine +imaret +white perch +Alpine mouse-ear +tea bread +yellow bass +poseuse +espionage agent +punching bag +eurypterid +orange sneezeweed +banded stilt +armhole +postern +mother +kapuka +catechumen +Soubise +Sauvignon blanc +gunnery sergeant +self-starter +ceratozamia +Atlantic cod +Reoviridae +blood cup +horseshoe bat +oriental plane +voussoir +fetterbush +samara +truncated pyramid +lingcod +athenaeum +shyster +Carolina hemlock +submarine torpedo +floating fern +yataghan +sun tea +viola d'amore +conenose +ventilation shaft +walk-up apartment +saury +wild wheat +porcupine ball +tahini +kris +grass fern +drip pan +black bryony +Scotch broth +tapioca pudding +southwestern toad +Hare Krishna +guimpe +wild madder +megalocyte +teaching fellow +shrubby penstemon +lesser wintergreen +privet hedge +Fahrenheit thermometer +stern chaser +prickly ash +pump room +ricer +chicken mousse +wing commander +sun gear +bolus +alpine milk vetch +opera cloak +twinjet +Goldie's fern +abnegator +alphabet soup +node +grape jelly +early coral root +Tarzan +quarterstaff +greeter +Eurasian woodcock +primary coil +quirt +tinkerer +bolt +creme de fraise +voltage regulator +news photography +Jat +bristly locust +Gouda +dickey +lobster butter +dwarf flowering almond +fagot stitch +Reform Jew +ostrich fern +bathyscaphe +purple mullein +alpaca +civic leader +jellaba +Arizona ash +wasabi +Irishwoman +choke +stockinet +religionist +sewage disposal plant +bittersweet +Hyphantria cunea +pheasant under glass +screen actor +chapterhouse +quoit +horseshoe bat +rapper +cupule +planetary gear +cascade penstemon +redoubt +salt +areaway +megalomaniac +bush willow +amethystine python +plains spadefoot +colour supplement +kick pleat +bell apple +narwhal +slippery elm +stenograph +baa-lamb +quadrant +balker +jobcentre +spit curl +bastard indigo +malacca +serow +adobe lily +yacca +palestra +penalty box +scrub beefwood +reenactor +screening +white bryony +alderleaf Juneberry +harpoon +alpine clubmoss +neurosurgeon +surrey +sweet calabash +Scotch laburnum +coquille +French honeysuckle +extrados +pipe cleaner +southwestern white pine +Virginian stock +scaly lentinus +aileron +carob bar +swordfish +Alpine woodsia +negus +wireworm +sweep +goldfields +drop arch +European bream +roly-poly +pin +bastard wing +fustian +wild buckwheat +lake whitefish +overcoat +water filter +Bermuda chub +New Zealand spinach +high-hat cymbal +European larch +radiologic technologist +fine-tooth comb +brunch coat +splice +electronic converter +overmantel +extern +taper +cluster bomb +teletypewriter +pinwheel +trailing arbutus +quipu +creeping zinnia +orange milkwort +tabard +Australopithecus africanus +melancholy thistle +insole +courser +darkroom +surface-to-air missile system +bark-louse +Confederate +neritina +clip-on +spouter +trench knife +outside caliper +dhak +Limburger +chuck wagon +buttercup squash +shirtdress +pouter pigeon +dirty old man +zodiac +fennel flower +mother figure +appointment +Manichaean +lignum +bouffant +rum sling +Ravenna grass +hibachi +gin rickey +American harvest mouse +cocozelle +western wheatgrass +black crappie +rhombus +Missouri goldenrod +barndoor +wild mango +pneumococcus +Boston lettuce +ratline +desert holly +cobweb +fluoroscope +ethnologist +tor +bullshot +stockade +greave +rock sea bass +slip-joint pliers +taxi dancer +schizophrenic +zill +creme de menthe +orange-blossom orchid +divot +supplejack +busybody +casemaking clothes moth +ramrod +gearbox +birdcall +Wiffle +thwart +beauty consultant +chicken paprika +trawl +skep +spirometer +hopper +kvass +doggie bag +bath chair +showy daisy +wild tamarind +Tarsius syrichta +glyptics +Algerian +cargo area +bunk +Velveeta +iconoclast +clinch +New Caledonian yew +false mallow +Japanese tree lilac +convex polyhedron +water boatman +cruise missile +finisher +colonoscope +cumin +wickiup +saccharin +whipcord +trailer camp +eryngo +cuckold +yam bean +fighting chair +forewoman +galingale +citron +positivist +four-lined plant bug +suet pudding +field pea +Circaea lutetiana +deer grass +trap-door spider +common corn salad +mirror carp +sounder +second-in-command +seaside alder +burgoo +ming tree +curry sauce +courbaril +green alder +figure loom +fauld +halfbeak +squelch circuit +cladode +winter cress +tongue and groove joint +dwarf dandelion +joss house +western buttercup +welted thistle +potato tree +anglewing +cookfire +marzipan +hood latch +seed shrimp +common moonseed +toasting fork +bevel +three-quarter binding +midwife toad +stage director +Pentecostal +technical sergeant +golden-beard penstemon +drunk +silky oak +corn gluten feed +T-square +stoker +selling agent +cruse +server +rope-a-dope +bicorn +matzo meal +wide wale +roadblock +false foxglove +tuck box +bandsman +smoke bush +machinist's vise +Highlander +scholiast +self-starter +Swedish rye bread +spark transmitter +maverick +maquiladora +cabinetmaker +compress +rainbow shower +huntsman's horn +mackinaw +copper rockfish +lappet +nitrate bacterium +telephone plug +soutache +Dacron +toboggan +sissoo +yogi +laurel-tree +vice chancellor +Christ's-thorn +cartridge fuse +serial port +quassia +tarweed +pecopteris +beggarweed +anchovy pear +bookbindery +woodland oxeye +toad rush +sandalwood tree +marsh andromeda +Tyrian purple +boothose +tragedienne +fragrant cliff fern +festoon +bondwoman +melancholic +butternut squash +exhaust valve +semi-skimmed milk +glowworm +Virginia oyster +Identikit +ayah +gallows tree +Carioca +monoplane +jewels-of-opar +scallop +moth miller +marsh cress +lobed spleenwort +ricotta +emitter +arame +tub gurnard +army attache +maniac +organizer +pheasant's-eye +Melba toast +homeboy +Bavarian cream +Maximilian's sunflower +backstop +Tremella foliacea +yellow avens +spreading fleabane +plumb level +false rue anemone +zabaglione +climbing maidenhair +doeskin +walking shoe +lancewood +material +jacksnipe +South American poison toad +agonist +hinny +paper mill +psychophysicist +valley girl +toast mistress +jorum +tiler +chicken Tetrazzini +trivet +grasshopper +three-mile limit +kink +kiang +pole horse +jig +Cornish heath +hedge thorn +false alumroot +Popper +remount +photojournalist +sideroblast +stonecress +Agave tequilana +Japanese lilac +hawse +maenad +air bag +leaf spring +dwarf willow +soda cracker +contralto +moleskin +pilaster +Audubon's caracara +pia +American organ +bleu cheese dressing +betel palm +PC board +almond willow +socializer +tone arm +stammerer +free-liver +scaler +Gentianopsis crinita +leak +black haw +hound's-tongue +grass pea +Stassano furnace +coralbells +ministrant +perihelion +Luxemburger +powder-post termite +arboreal salamander +cushion flower +foramen magnum +pyrethrum +poacher +woolly mammoth +horned chameleon +tearaway +father-figure +tufted gentian +salmi +finger millet +physa +registrar +polyoma +bamboo shoot +matchlock +seine +congress boot +bulgur pilaf +monosodium glutamate +Kentucky wonder +mycologist +kedgeree +ragweed pollen +boarfish +yellow pimpernel +tan +northern Jacob's ladder +macrobiotic diet +migrant shrike +big-cone spruce +colonialist +white dogtooth violet +bath asparagus +webbing clothes moth +ladies' room +experimenter +prairie bird's-foot trefoil +bootleg +cognitive neuroscientist +fire chief +flagfish +dendrite +stinking goosefoot +fore edge +hogfish +Spanish cedar +hotel-casino +Tory +life-support system +pea flour +cash bar +Chenin blanc +white-footed mouse +Canada garlic +salt-rising bread +roomette +mastodon +bell founder +long iron +bi-fold door +fig-bird +European water shrew +dyer's weed +frog orchid +allosaur +Florida yew +wild potato vine +crape fern +flat-topped white aster +klebsiella +oil heater +waxmallow +enjoyer +mesocarp +semidesert +senior vice president +coccidium +burrawong +syllabub +jump suit +harrier +leaf roller +cherrystone +cinchona tree +touring car +eulogist +air force officer +red goosefoot +cat thyme +smoothbore +slugger +cardiac monitor +cobber +blister rust +musicologist +rolled biscuit +Braun's holly fern +hog plum +nonpasserine bird +pascal celery +damson +Jonathan +Sheraton +cohune palm +egg white +baton +sixth-former +Siberian pea tree +choanocyte +wineskin +auditor +detention home +Leichtlin's camas +Chartreuse +clusia +club car +wattle and daub +security blanket +common American shad +assistant professor +marsh pea +camomile tea +gopher hole +gravure +Freudian +spirillum +maharani +equilateral +crow garlic +mammee apple +felwort +hardtop +dillenia +curlycup gumweed +pilot engine +calcimine +wooly lip fern +bitter dock +wineberry +jumper +monolingual +spinning frame +old-timer +native cat +diving petrel +sodium-vapor lamp +marchand de vin +sexton +matelote +interior designer +windfall +mole salamander +minder +bodkin +neutron bomb +Caloscypha fulgens +slinger ring +mezzo-soprano +aura +Southern Baptist +viscacha +midfield +tie +prosthetist +round-headed leek +yellow mariposa tulip +canary grass +staddle +Tokay +Muenster +brazil nut +California black walnut +applesauce +penologist +virgin's bower +tenon +steward +Jerusalem oak +red-bellied snake +bindery +scow +fluid flywheel +bullhead +satinleaf +clove +double glazing +matron +wild parsnip +winged elm +shoot-'em-up +musk deer +white rust +lock +Cornishman +Vidalia onion +corn spurry +freeloader +justice of the peace +inlay +myxobacteria +tiglon +tangram +German ivy +scented fern +woolly daisy +caretaker +gastroscope +scuppernong +spotted sunfish +guilloche +codling +wormcast +Eskimo curlew +tayra +European fly honeysuckle +septuagenarian +third gear +coatee +red alder +water ice +cubitiere +frame buffer +gamboge tree +pernyi moth +chicken Marengo +Galliano +Lincoln +true sago palm +hunter's sauce +carpet beater +alpine goldenrod +arch support +vehicle-borne transmission +jilt +paternoster +redcap +Siberian larch +hoary plantain +swan's down +chicane +reverse +divan +kneeler +alexic +mock turtle soup +daffodil garlic +mission bells +squilla +ursinia +winter's bark +trifoliate orange +discina +frijole +Swiss steak +maildrop +knotgrass +dog fennel +drum sander +heroin addict +costume +camber arch +shining willow +lutefisk +red porgy +microfossil +good old boy +angle bracket +pitcher sage +bordelaise +heat exchanger +carrion +bush jacket +fanjet +coach +blackface +sicklepod +Manhattan clam chowder +daisywheel printer +olive +Sphacelotheca +Spanish needles +brown root rot fungus +boudoir +encyclopedist +V-8 juice +red haw +brass buttons +gym suit +skywalk +water wagon +gas-turbine ship +stoup +lisle +sailor suit +box beam +balm of gilead +housemaster +hayrack +neutralist +water elm +brook thistle +doyenne +nark +alpha-tocopheral +WASP +hydrilla +water-shield +footlocker +variola major +pargeting +ion engine +yellow globe lily +Malecite +bloodleaf +yellow sand verbena +whorled loosestrife +packinghouse +Carolina parakeet +Virginia waterleaf +armband +red rockfish +factory ship +moon trefoil +jump seat +water gillyflower +yerba mansa +chamfer bit +compass saw +hopsacking +Indian rhododendron +sickbed +treacle +honey eater +mailsorter +seabeach sandwort +sob sister +primrose jasmine +prince consort +elocutionist +wishing cap +runner +trestle +sugar water +half-and-half dressing +fringed poppy mallow +portiere +bung +swan orchid +weather satellite +beef broth +marblewood +sapper +agitator +wren-tit +grade +allspice tree +spacewalker +American hornbeam +sieva bean +dill seed +potoroo +love-in-winter +alembic +Cheshire cheese +small white aster +Oregonian +flipper +twill +differential gear +Prince Albert +licorice +foster-father +Melkite +portraitist +Yosemite toad +Cox's Orange Pippin +slender wheatgrass +knob +silique +Rocky Mountain bee plant +stirrup pump +chicken hawk +sweetbrier +Sierra lodgepole pine +poulette +biohazard suit +striated muscle cell +Geiger counter +World Wide Web +turmeric +prairie wake-robin +latchet +pushball +grill +shooting lodge +floating-moss +refried beans +boojum tree +red poll +toothbrush tree +rabbiteye blueberry +red haw +sweet vetch +delta +upland cotton +ballet mistress +padrone +complementary color +great Solomon's-seal +bud brush +brandy sling +spinster +Andorran +Mojave aster +mackinaw +golden calla +bottom rot fungus +segmental arch +periwinkle +hellion +topknot +copper +Mexican hyssop +weeping love grass +point woman +pathogen +fall cankerworm +common shiner +silverspot +corer +atomic pile +crystal detector +yellow spot fungus +truncated cone +saprobe +variegated horsetail +Cro-magnon +cercaria +aglet +pollster +oyster bed +pancake turner +egg cream +sporozoite +quirk molding +mutisia +sound bow +physic nut +sugar-bush +cow +magnetron +jungle hen +brassie +rock bit +taco sauce +seeded raisin +desert selaginella +folding door +vinegarroon +Pinot blanc +rye +ellipsoid +betel nut +tree of knowledge +ambrosia +long tom +breechloader +bicolor lespediza +cosmetician +monoblast +American oil palm +prancer +farina +caiman lizard +hardball +bullock's heart +cotton rat +whiting +weather ship +sharecropper +creamcups +gas bracket +divinity +ornithologist +yellow twining snapdragon +showy goldenrod +end man +heptagon +sand dropseed +round file +guama +blue elder +sand spurry +raccoon dog +zigzag goldenrod +fast reactor +arctic willow +cyclopean masonry +punter +sgraffito +slattern +storage ring +clipper +pulasan +short-tailed shrew +scammony +daybook +umbrella tree +coloring +element of a cone +gesneriad +cane +burgoo +western coral snake +friendship plant +Leydig cell +scrutineer +hairy golden aster +inclined fault +water milfoil +bryozoan +nardoo +native pomegranate +curly grass +Florence fennel +resurrection plant +ice water +crown +ploughman's lunch +clustered lady's slipper +kitchenette +sand sedge +pouched mouse +roadbed +parsley haw +predecessor +super heavyweight +seedless raisin +mailbag +sparling +codling moth +squama +Bercy +thermoelectric thermometer +Jaculus jaculus +saltpan +firmer chisel +round whitefish +ramrod +criollo +pinch bar +slash pocket +thigh pad +velvet plant +intergalactic space +brazilian ironwood +whaleboat +sirrah +hanging fly +aspirator +Dominican +dribbler +yellow-eyed grass +Cornish +geophysicist +tarmacadam +marchioness +rattlesnake orchid +Alaska Native +ilama +myrrh tree +zucchini +licorice root +nosebag +lounger +troposphere +virginal +spaghetti Western +Virgin Mary +waterwheel plant +dry nurse +enate +carpet shark +rijsttaffel +stuffing nut +caraway seed bread +Leotia lubrica +kaffiyeh +Boston baked beans +halophyte +backscratcher +instillator +trefoil arch +pip +digitizer +dosemeter +Carolinian +French sorrel +boards +historian +rangpur +clansman +goral +leatherjacket +coiner +fleece +white globe lily +storm cellar +roundhouse +mediatrix +butterfly flower +swamp gum +prairie vole +rhizomatous begonia +common tobacco +Marco Polo sheep +subarachnoid space +broomweed +safety net +silky wisteria +swagger stick +spectacled caiman +derris root +soap pad +chop-suey greens +summer hyacinth +palo santo +carbohydrate loading +chinch bug +roadman +sheep plant +messiah +desk officer +banquette +drugget +trumpet arch +great duckweed +purdah +heartbreaker +hasty pudding +alligator weed +dragee +yellow bristlegrass +Jacob's ladder +campstool +coffee fern +sweet fern +little chief hare +cat-o'-nine-tails +rep +American red elder +divorcee +black salsify +cambric +sennit +Canada ginger +wonderer +Formica +cream-colored courser +zooid +European beggar-ticks +sorrel tree +piddock +blolly +red-flowered silky oak +bay +Hooker's onion +dark horse +cone clutch +Roman hyacinth +paintbox +mestiza +green alder +bill +panicled aster +mammogram +snuffbox fern +Rediffusion +swamp fly honeysuckle +stoup +psychiatrist +nodding groundsel +student union +cold duck +bee beetle +playbox +Psychopsis krameriana +nosh-up +earthnut +narthex +single-rotor helicopter +revetment +sweetleaf +seasoned salt +piculet +speckled alder +mackerel scad +common yellowwood +devisee +static tube +Spanish heath +umbrella plant +fucoid +Chilean +coral-root bittercress +fanatic +cachou +agony aunt +bird's-foot fern +washwoman +torchbearer +placoderm +frosted bat +spicemill +Cape lobster +hard-shell crab +colonizer +camphor daisy +friar's-cowl +false tamarisk +toggle joint +tinsmith +theorist +hydrologist +loganberry +universal donor +northern whiting +tent-caterpillar moth +russet +kangaroo mouse +African scented mahogany +bastinado +breast implant +betel +grade separation +vox humana +stodge +Maryland chicken +Anguillan +oil pump +governor's plum +narcissist +deadwood +private citizen +winker +ropewalker +gidgee +Lothario +ski resort +major-domo +von Neumann machine +belaying pin +water parsnip +Fissipedia +luggage carrier +spring water +oyster stew +kohl +celesta +date-nut bread +punchboard +sunniness +hospital train +man +rack and pinion +mixer +pousse-cafe +narrow goldenrod +Maxim gun +stiff +recruiting-sergeant +watch glass +white hellebore +tung tree +prairie white-fringed orchid +beef Stroganoff +scoffer +grassy death camas +Shawnee cake +tapioca +Short's aster +banker +laparoscope +honeyflower +Caterpillar +electric clock +baling wire +huntress +Surinam toad +art school +incurable +Canton crepe +apple juice +hipline +bronchoscope +marshmallow fluff +Texan +wild fig +sawed-off shotgun +forestay +red kauri +fish slice +Egyptian grass +English walnut +brown sauce +ogee arch +nectary +chambray +leather flower +phloem +Persian violet +bomb calorimeter +western narrow-mouthed toad +soup du jour +sickle alfalfa +caracolito +periscope +coralberry +sword bean +sigmoidoscope +water locust +hygrodeik +sycamore +sheikdom +ballistocardiograph +clove +akee +fucoid +jacquard +cat's-ear +puritan +slender wild oat +smooth softshell +purchasing agent +landing craft +chartist +lace bug +sharksucker +Virginia chain fern +horseradish +namer +ripcord +personage +aspirin powder +puku +Wankel engine +nightcap +velvet bent +roridula +cytogeneticist +olm +almond extract +common heath +fringe-toed lizard +Kentucky yellowwood +lithosphere +cramp +bulgur +scurvy grass +officer's mess +frigate +electroscope +giant chinkapin +opah +rutabaga +wood hoopoe +Farley maidenhair +shingle tree +argentine +router +palm nut +quillwort +hiba arborvitae +runcible spoon +hireling +sickbay +alpine totara +white lupine +Cotoneaster horizontalis +desert plume +staghound +Sea Scout +opalescence +enophile +Jersey elm +coal house +Helvella acetabulum +selenium cell +white camas +creole-fish +auger +fragrant agrimony +research center +achromia +shank +cottonseed +mod con +extension +sugar beet +winter flounder +silky dogwood +strop +tokamak +rabbit ears +baby farmer +fireman's ax +serration +taproot +socket wrench +action officer +Chilean jasmine +Greek fire +stem-winder +body louse +lumpsucker +stink bomb +American lady crab +dicer +lie detector +maneuverer +black-headed snake +tiger moth +shooting stick +spermatid +babushka +deaconess +home +prior +chanfron +chickasaw plum +big-eared bat +rusty woodsia +tertigravida +miniver +combretum +habit +bluehead +angled loofah +gipsywort +fire-on-the-mountain +purple milk vetch +alpine gold +merozoite +loddon pondweed +Uniat +provost marshal +Gyromitra fastigiata +Coigue +proconsul +oarfish +San Jose scale +filature +chimney plant +spiny softshell +bluecoat +live axle +river limpet +clever Dick +pink bollworm +Japanese plum +roarer +caricature plant +wardroom +Texas chachalaca +Bahia grass +Moreton Bay tulipwood +accessory fruit +pearl barley +ashcake +bunt +Polynesian tattler +pine fern +laughing owl +potato fern +speaking trumpet +adjoining room +bearing rein +banana quit +redbrick university +Scleroderma bovista +magdalen +pressurized water reactor +advisee +NIMBY +poorwill +almond moth +comedian +star tulip +cracked wheat +water pump +guest of honor +yellow-breasted bunting +hire +pedate leaf +augur +purple locoweed +Socinian +upland white aster +guesthouse +double reed +detention basin +rollmops +hitch +bodega +mayeng +sparkplug wrench +attack dog +peach melba +heliozoan +tower mustard +blue mold fungus +lamplighter +banded sand snake +smooth crabgrass +elsholtzia +bodkin +Aegean island +bag lady +alewife +arcella +electrical contact +common ax +animist +concave polyhedron +coalface +climbing perch +yellowtail +hobble skirt +marquee +Russian dandelion +snow mushroom +polo ball +NADA daiquiri +cormous plant +chaparral mallow +inside caliper +milking stool +fallout shelter +sea gooseberry +Danish blue +grissino +chimney breast +mosquito fern +soundbox +spring chicken +epauliere +cape forget-me-not +japan +saddle oyster +white fritillary +push-button radio +bladder senna +bladder stone +macedoine +moire +Shawnee +starnose mole +douroucouli +horseradish sauce +electron gun +cotter +console +park commissioner +free press +lump sugar +western poison oak +apple maggot +keurboom +lisper +griffon +burin +horseshoe whipsnake +Jacobean lily +spinner +cochineal insect +emesis basin +sowbane +humanitarian +uakari +three-dimensional radar +wild hollyhock +heartseed +swinger +two-by-four +mop handle +common amsinckia +traitress +rush aster +fibrous-rooted begonia +violet-flowered petunia +milliammeter +alidade +azure aster +celery seed +snorer +scarlet plume +obtuse leaf +heathen +rose chestnut +headrace +dwarf buckeye +Pacific tripletail +wiggler +bounty hunter +Lowlander +slate pencil +typist +syconium +vaquita +skybox +business lunch +gusher +curacao +palometa +Diapsida +light diet +sourdine +thorny amaranth +potato fern +cartridge extractor +peshmerga +chaffweed +tahoka daisy +hematologist +massage parlor +diverging lens +breadroot +papyrus +amarelle +cover plate +hubbard squash +cryptomonad +whitetail prairie dog +rabbit burrow +orthochromatic film +goncalo alves +Chile bonito +tent-caterpillar moth +Manila grass +buck sergeant +mustard seed +crested wheatgrass +wise guy +asarabacca +field pea +bite plate +barbasco +heart-lung machine +mouse-eared bat +piping guan +gun pendulum +climbing onion +fungus gnat +Livonian +one-hitter +Chilean firebush +Sonoran whipsnake +round scad +myelogram +Rhodes grass +vomitory +roble beech +South-African yellowwood +molasses +Velcro +common calamint +radiation pyrometer +sketcher +chaparral pea +coffee stall +Australian nettle +bilimbi +Khedive +visionary +field spaniel +devilwood +collimator +Siberian spruce +sling +limestone salamander +ribbon worm +hazel +petter +coolant system +artillery plant +bailiff +chameleon tree frog +microsporophyll +maiden blue-eyed Mary +Drosophyllum lusitanicum +cocozelle +king post +nailer +knobkerrie +tovarich +Intelnet +worm lizard +drop forge +wool grass +brown bullhead +anthropoid +vitamin A2 +creche +hickory nut +whiffletree +deipnosophist +Muskhogean +masochist +hypsometer +gliricidia +complexifier +wild licorice +reconnaissance vehicle +fives +beefsteak plant +eastern dasyure +bookworm +crested coral root +wire recorder +cinnamon vine +bubble +Newfoundland dwarf birch +spruce bark beetle +teetotaler +fad diet +ascus +spicebush +African coral snake +soft-shell crab +Postum +packhorse +sand cherry +cricket-bat willow +middlebrow +Hungarian sauce +buffalo clover +jimsonweed +latanier +stablemate +jumper +zoospore +smooth woodsia +flowering ash +unilateralist +lomatia +flapper +wild cotton +Siberian wall flower +probe +bankrupt +blockade +lemon geranium +fig leaf +basic point defense missile system +clack valve +buttinsky +ingenue +mountain everlasting +zebra-tailed lizard +shaving-brush tree +evergreen huckleberry +core drill +lugworm +Cashmere goat +doorjamb +minelayer +student center +horsehair +European dewberry +white broom +arenavirus +eastern poison oak +rye ergot +Tupi +tensiometer +fleawort +coquille +icing sugar +junior lightweight +Doppler radar +mahuang +candlepin +chambermaid +evergreen blueberry +Eton jacket +parvis +solleret +molded salad +malvasia +birth-control campaigner +nonagon +backswimmer +ogee +bowstring +salt marsh mallow +trapezohedron +hoary willow +speech therapist +Zinjanthropus +core +red-backed mouse +eptatretus +mossy saxifrage +Aristotelian +Thessalonian +searing iron +bifocals +falangist +field pea +packsaddle +lay reader +hoecake +cuboid +white maire +iceman +lobscouse +neckcloth +color-blind person +Chinese holly +assemblyman +white-lipped peccary +kava +plastron +crab louse +hook wrench +trailing four o'clock +junior +skilly +internet +tonguefish +footman +sub-assembly +evangelist +track +bench lathe +desk clerk +scalded milk +chamois cloth +American marten +chachka +nondescript +pellitory-of-the-wall +swamp candles +procurator +cuddy +farkleberry +mountain male fern +trawl +dual scan display +fish meal +prospector +convener +guano bat +ant shrike +picture rail +sand rat +gynophore +quilting +sleeper +summer savory +Cotoneaster dammeri +smooth sumac +slumgullion +suite +catalufa +spherule +lean-to tent +gryphon +gas shell +short iron +sweet sultan +dewberry +Victoria plum +American water shrew +X-ray tube +macebearer +green arrow arum +abbe +poke milkweed +atheist +Fosbury flop +Ord kangaroo rat +moldboard +wheat germ +explosive trace detection +whippoorwill +examiner +tallyman +Crookes tube +wild peach +fringed grass of Parnassus +Crookes radiometer +Atlantic croaker +lobster stew +spring cress +maggot +pacer +hydra +Zionist +pepper tree +diamante +baize +Rhodesian man +county agent +respecter +Anglican +antimacassar +materialist +Swan River everlasting +cloud grass +toll line +C battery +chinese mustard +grass poly +warming pan +seasonal worker +common sickle pine +bathysphere +elegant Habenaria +card table +Chilean cedar +brocket +collimator +malted milk +avadavat +fire marshall +coloratura +yellow spiny daisy +fingerstall +narrow-leaf penstemon +indigo broom +pillwort +bearberry willow +Etonian +certified milk +climbing bird's nest fern +field coil +wrist pad +parr +kaoliang +engelmannia +stocker +satrap +Nantua +spearfish +caper tree +gold-tail moth +mountain chinchilla +sea milkwort +westerner +army cutworm +leaf-nosed snake +neurobiologist +xeranthemum +Eastern silvery aster +ecclesiastical attire +caper +Ukranian +bight +button fern +peach pit +oligodendrocyte +maar +digitigrade mammal +streptobacillus +sensitometer +preemptor +oat +bell foundry +crown lens +rock purslane +Junior +Brazilian guava +kicksorter +Ohio goldenrod +red mulberry +King's Counsel +mountain four o'clock +fairy shrimp +fell +oca +sycophant +chantry +dermatoglyphic +bomblet +keyhole saw +hangman's rope +little barley +lion-jaw forceps +giant scrambling fern +popper +dulcimer +Espagnole +tardigrade +smooth-haired fox terrier +bullbrier +rewa-rewa +Japanese poinsettia +trunk line +cannery +helminth +American spikenard +prince's-feather +arthroscope +ginger +aphakic +pilot bit +angle of refraction +low-sodium diet +wall creeper +growler +praetorium +Hall of Fame +soupfin shark +Molotov cocktail +kaffir boom +stitcher +sawwort +flagellant +Atlantic herring +Reticulitermes lucifugus +voltaic pile +snowy orchid +southern flounder +skysail +osage orange +white mullein +lined snake +tolu tree +poliovirus +foreman +burette +jackass bat +invigilator +electromyograph +acarus +presence chamber +columbian mammoth +hyacinth bean +pilot +meadow jumping mouse +Maria +outskirts +aftershaft +Queensland nut +schlockmeister +plainsman +afropavo +scarlet musk flower +five spice powder +gunboat +multiplex +Dutch uncle +louvered window +chimney corner +cuscus +psalmist +Vichy water +signer +amphiuma +harmonizer +authorizer +naiad +control rod +stentor +mountain bladder fern +gig +read-only memory chip +assenter +vixen +hermitage +corn dab +locksmith +cockspur thorn +variable-pitch propeller +western red-backed salamander +dolman sleeve +cultist +sweet buckeye +pine vole +Peking man +mountain swamp gum +nimblewill +bethel +aye-aye +lancelet +teff +Alpine celery pine +endive +nipa palm +center of curvature +seeder +Sabahan +sea scallop +social secretary +gorgonzola +western chokecherry +misanthrope +rabbitweed +beggarman +button fern +white mallee +doodia +mastiff bat +roper +prima donna +blanc +holding pen +fingerling +skyhook +flophouse +steam chest +crystallized ginger +acrocarp +horse pistol +true mahogany +costmary +ballistic galvanometer +jaunting car +bartonia +rep +mandibular notch +bubble and squeak +umpire +fringed loosestrife +bear oak +ski jump +staggerbush +plumcot +thermal reactor +field brome +bodkin +jackknife-fish +malope +writing arm +gold fern +Stayman Winesap +merlon +eclectic +fluxmeter +emeritus +imam +drum +pop tent +capital ship +subalpine larch +flail +Lorenzo dressing +tomboy +eastern woodrat +warrantee +Pacific spiny dogfish +sheepshead porgy +farthingale +Cryptoprocta +power loom +communicant +howdah +ectomorph +false foxglove +basset horn +odd-pinnate leaf +Wisconsin weeping willow +Queensland bottletree +dampener +corbel arch +silent butler +Circe +town clerk +Japanese chestnut +bloodwood tree +switcher +cup hook +spreader +rice rat +straightedge +traverser +fluid drive +Spanish paprika +sour milk +poison camas +bean dip +card table +vinegar fly +vizier +electric-discharge lamp +purple rock brake +dynamo +Japanese snowbell +Grindelia robusta +neuroglia +safflower seed +coronet +frown line +Renaissance man +Steller's sea cow +book scorpion +isosceles triangle +arthritic +spherical triangle +kangaroo mouse +garden orache +stemless hymenoxys +titi +out-basket +gent +columnea +mint sauce +mouthbreeder +Liebig condenser +cheerer +assegai +stickler +Merostomata +dimmer +grey poplar +common heath +scorzonera +glory hole +Blackfoot +oil slick +musketeer +apple geranium +daisyleaf grape fern +gas furnace +bijugate leaf +Arabist +star-thistle +hand throttle +huckleberry oak +lift pump +maulstick +Rome Beauty +Newburg sauce +pit +volunteer +Baldwin +ark +Asian horseshoe crab +black calla +marlinespike +Gentianopsid procera +guinea gold vine +tucker-bag +desk sergeant +piezometer +migrator +keelson +executrix +sackcloth +onion smut +buckboard +substitute +pudge +mess +cinchona +intervenor +gravimeter +pederast +censor +gastroenterologist +cutlassfish +launch +demerara +Diegueno +bog bilberry +aglet +soda fountain +crank call +harpoon gun +ribbon fern +Gurkha +output device +epilating wax +greasewood +water horehound +return key +fairy swallow +spatulate leaf +culverin +leptocephalus +kleptomaniac +barley water +bleeding tooth +Cheyenne +maleberry +limber +tapenade +whorled aster +toe +revenant +lap joint +vein +truant +florest's cineraria +morning dress +trichodesmium +nightshirt +element of a cylinder +shopaholic +section hand +electrodynamometer +Guadalupe cypress +rosebud +racist +avaram +keeled garlic +Alaska rein orchid +orange toast +cunner +dipstick +Neolentinus ponderosus +bulbil +charlotte +pull-through +header +Manduca quinquemaculata +persona grata +elegist +cafe royale +scup +semanticist +wood sage +field magnet +tundra +bay myrtle +alluvial flat +arrowleaf groundsel +celtuce +baryon +must +entrant +othonna +pied-a-terre +liza +sticky aster +grasshopper mouse +prison guard +tire iron +bomb rack +Spanish American +sheltered workshop +turfing daisy +backbone +tangle orchid +creeping willow +dumb bomb +horse cassia +barosaur +Yavapai +shrimp Newburg +peanut worm +dwarf chinkapin oak +corchorus +brick cheese +by-catch +stover +Urnula craterium +clasp +Kekchi +alpine coltsfoot +soybean future +altar wine +ripping chisel +encephalogram +mountain spleenwort +transferee +remoulade sauce +American rock brake +stenographer +read/write head +loblolly +ground +powdered mustard +brake band +sea dahlia +freak +proconsul +Coffey still +Sivapithecus +pellitory +palm cat +skew arch +American angelica tree +vigilante +candelilla +andryala +amarelle +swiftlet +petcock +associate professor +sclerite +open circuit +Virginia crownbeard +Last Supper +button tree +scyphozoan +margate +mercury cell +horsewhip +water scorpion +companionway +drop cloth +Amhara +miraculous food +pro-lifer +embryologist +Creole +bombazine +Indian blackwood +cubeb +trace detector +gros point +main-topsail +meringue kiss +spree killer +capstone +specimen bottle +woolly apple aphid +silverweed +American barberry +gallfly +European bog asphodel +northern flying squirrel +alliterator +Old Catholic +heliograph +Pteris cretica +tippler +pump well +allspice +balancer +scarlet bugler +lantern fly +white prairie aster +krummhorn +robin's plantain +Pacific sardine +patty-pan +decaffeinated coffee +western saxifrage +warrantee +colorimeter +ball bearing +makomako +foot +troika +apricot sauce +data multiplexer +rose-root +sound film +Northern dewberry +water hickory +swing door +spastic +Oligoporus leucospongia +botulinus +tamale pie +Sagittarius +muff +spicebush +petiolule +pump action +Parry's pinyon +split-pea +rudder blade +princess royal +wormseed mustard +honey guide +pip-squeak +fin keel +foretop +cyrilla +Navaho +melanocyte +deist +silver tree +citrus whitefly +Morrow's honeysuckle +green peach aphid +longanberry +call-board +wild yam +novelist +toothed spurge +alienee +pond apple +allspice +Carolina lupine +Jack of all trades +white false indigo +boiled dinner +princewood +sailor's-choice +false bracken +microbrewery +black grama +tutee +brickkiln +sea raven +guesser +wirework +European lemming +thyrse +plains lemon monarda +milo +shunt +spotted cowbane +anchovy sauce +grande dame +Maryland golden aster +Chinese puzzle +boarfish +burweed marsh elder +defense contractor +nitric bacteria +Belgian hare +beach plum +conformal projection +sand fly +steering linkage +quickset +Mahayanist +Geiger tube +loudmouth +Lancastrian +brownie mix +ex-spouse +deltoid leaf +Shasta salamander +rabbet joint +purple anise +garibaldi +gebang palm +bladderpod +Host +great bowerbird +string cheese +spinning jenny +drift net +matriarch +guar +bitter betch +panda car +mess +plains pocket mouse +scarlet wisteria tree +deerberry +reamer +homing torpedo +molehill +stockyard +reniform leaf +rag +symmetry +Texas star +lerot +pickle relish +three-seeded mercury +cotter pin +ice-cream bean +farmyard +bar magnet +hansom +prickle cell +renal cortex +pest +Ultrasuede +sailing master +brougham +wastrel +amboina pine +Canary Island hare's foot fern +ninepin ball +southwestern lip fern +usherette +lemon drop +star begonia +weeds +saltworks +Persian melon +corbina +medusa +bucksaw +Gibson girl +diameter +American twinflower +kino +clear liquid diet +angiocardiogram +wetter +oyster cracker +yellowfin mojarra +wild parsley +life tenant +broom closet +Corynebacterium diphtheriae +square shooter +bedwetter +ball-and-socket joint +nonsolid color +Salmonella typhimurium +buffel grass +hip pad +subaltern +heliothis moth +trail boss +hayloft +Francisella +primordial dwarf +cock-a-leekie +sugarplum +propulsion system +tyrolean +Carib +salai +ketembilla +ironclad +cornhusk +heckler +multistage rocket +north island edelweiss +Chaldean +twenty-two pistol +Francophobe +scofflaw +sickle feather +screw bean +sea squill +Scopolia carniolica +agglomerator +western holly fern +presenter +straight pin +Myxine glutinosa +Colbert +clover-leaf roll +war paint +bird's-eye bush +longfin mako +running suit +arrow wood +margrave +blue fleabane +dracontium +plastron +chimney swift +child prodigy +commissar +turtle soup +postulant +archaebacteria +snakefly +Pitot tube +chap +smilo +Malthusian +French roof +worm wheel +gulag +pointed-leaf maple +pull-off +Cathaya +American green toad +ball cartridge +infiltrator +snowfield +crotchet +auxiliary pump +bearnaise +galax +chaenactis +olympic salamander +sundowner +cows' milk +beach plum +moss-trooper +Arabidopsis thaliana +cat's-claw +bog rosemary +ribier +book agent +bumper jack +beefwood +monk's cloth +alpine bearberry +climbing fumitory +cucking stool +puka +Piltdown man +property man +discharge lamp +X chromosome +knobble +lobster Newburg +herbalist +sunray +golden saxifrage +leopard cat +muffle +stonewort +blancmange +intraocular lens +trepan +desert mariposa tulip +plume poppy +Dane +martynia +shaver +white milkweed +napu +tansy-leaved rocket +abortus +telemeter +tansy mustard +harpy +honeysuckle +ironworks +testacean +Tartuffe +silvervine +Sihasapa +surface gauge +western blind snake +paramyxovirus +Icelander +bird louse +stockbroker belt +test-tube baby +ague root +little golden zinnia +dietician +elephant's-foot +dirty bomb +sailing warship +brier +tinter +Connemara heath +potato fungus +bait casting +decagon +rosefish +die +high-pass filter +solitaire +widow's walk +goldthread +Tudor +trews +orange pekoe +ninon +soda jerk +sump +flying carpet +burial garment +oblanceolate leaf +press gallery +Shintoist +three-centered arch +spreading pogonia +Moro +foxtail orchid +Ghanian +dry kiln +thane +naranjilla +bitter pea +American bugbane +apron string +oyster fish +Port Jackson fig +prize winner +high-water mark +Oneida +smoking room +potato skin +charge d'affaires +gantlet +amyloid plaque +barmbrack +mate +arrow leaved aster +handbarrow +horned screamer +virago +linoleum knife +rattlesnake root +K ration +reset +foot brake +red coral +good guy +aberrant +lavalava +poleax +garden webworm +sneezer +mountain heath +American dog violet +eolith +chimneysweeper +matriarch +smalltooth sawfish +sea mouse +tubercle bacillus +superconducting supercollider +Abney level +darnel +gherkin +celery salt +Tungus +pulasan +oriflamme +death camp +redhorse +apprehender +scion +selectwoman +pentahedron +principal +old school tie +slice bar +chanar +pimento butter +wailer +zero +mescal +rosebud orchid +stone bramble +Jarvik heart +NOC +pitchman +rat cheese +strawberry tomato +dwarf golden chinkapin +landau +tocsin +ampulla +scratcher +crab Louis +ginseng +ripcord +polluter +tensiometer +eyewitness +aalii +Oregon crab apple +conservator +day jessamine +hexahedron +suture +tippet +linsey-woolsey +vernal witch hazel +stainer +egocentric +canistel +nudger +shipping agent +shortleaf pine +battle sight +cheese spread +weeder +incendiary bomb +honeyflower +stovepipe iron +stepper +hellgrammiate +votary +aflatoxin +arquebus +impulse turbine +pipewort +garrote +glow lamp +pigsticking +blood clam +surface search radar +Bolshevik +platen +chariot +Gentianopsis thermalis +water level +quandong +catalytic cracker +giant foxtail +nut butter +drainplug +holdover +coastguardsman +Secretary of Health and Human Services +Seeing Eye dog +American plaice +coquilles Saint-Jacques +christella +medium +clingfish +lally +light-o'-love +Gentianopsis detonsa +taper file +signal detection +trip wire +lignosae +receiver +sedan +mud puppy +corn sugar +Philippine mahogany +magnetic pole +jointed rush +trapper's tea +Dorking +welcome wagon +clammyweed +guard +false azalea +convalescent +babassu +dedicated file server +colossus +air search radar +marquess +straight flute +sand stargazer +sea catfish +rosilla +ripsaw +Bermuda onion +peach sauce +sagebrush mariposa tulip +yashmak +Virginia mallow +erose leaf +sand blackberry +boulevardier +forester +choragus +onion mildew +threadfin +winged pea +sugar daddy +rotary press +styracosaur +rathskeller +Japanese millet +anchorite +coral drops +false gavial +eastern pipistrel +cheese press +Chinese primrose +pamperer +real estate broker +power worker +breeder reactor +nutcracker +piano wire +cushaw +Sinanthropus +firebreak +kelp greenling +herba impia +toll call +yoke +bird fancier +evening-snow +fever tree +reed meadow grass +flanker back +toggle bolt +Santa Cruz cypress +carbonnade flamande +northern dune tansy +mikado +millettia +forty-five +court +icepick +holm oak +Japanese angelica tree +Pacific cod +cant hook +urologist +spelt +lekvar +enologist +Mediterranean flour moth +prickly-edged leaf +Spanish grunt +dune cycling +frostweed +whisperer +tucker +Roman wormwood +counterterrorist +woolly alder aphid +Nuttall oak +snail butter +threshing floor +motley +forge +water mold +mummichog +sulfur paintbrush +head +walking delegate +jujube +peachleaf willow +Christmas bells +valley pocket gopher +bear's-paw fern +Lanthanotus borneensis +pearl hominy +placeman +swage block +offerer +stargazer +jeweler's glass +male chauvinist +crossbar +Oktoberfest +tamarau +micronutrient +large-leaved aster +tasset +tepary bean +sausage curl +ivy +snob +roller towel +wood meadowgrass +archil +padrone +prairie rocket +tongueflower +kidney fern +Carolina buckthorn +sea island cotton +landscape architect +realist +oyabun +mother hen +ostracoderm +esker +heliophila +nympholept +shining clubmoss +press agent +clam dip +Djiboutian +white currant +codfish ball +hand cheese +kraal +trident +conventicle +bacteroid +Indian plantain +quandong +kola nut +signor +theater light +musk clover +canistel +silent partner +steel-wool pad +diggings +affluent +sightreader +John Doe +arrowworm +goatsfoot +guardroom +wild cinnamon +kaffir boom +ink eraser +yardie +industrialist +sea lily +polarimeter +Polistes annularis +western big-eared bat +omnivore +Ted +horsecloth +crab cocktail +vacuum chamber +flower-of-an-hour +bilge +poleax +neolith +Montezuma +plum-yew +welfare case +trave +pipe bomb +shading +Centigrade thermometer +bangalore torpedo +celery top pine +nuclear rocket +fowling piece +anti-Semite +landscape +derris +bush honeysuckle +Mediterranean water shrew +ticket collector +masked shrew +white dipladenia +Savoyard +bondman +tempter +pygmy cypress +pentathlete +thruster +usurper +Arminian +yerba buena +ice field +ichthyosaurus +sackcloth +bean tostada +Oxbridge +Pteropus hypomelanus +thinker +bank robber +ape-man +thurifer +knawel +mule fat +hot spot +hairy-legged vampire bat +night raven +hook and eye +crocodile bird +skunkweed +beaver rat +cypress sedge +florida selaginella +April fool +Jonah crab +glass wool +corkwood +dwarf elder +hinging post +gentile +Brazilian trumpeter +witch doctor +thermograph +pink shower +Mao jacket +capelin +parang +bradawl +stooper +jewel orchid +citrange +oarswoman +Macedonian +particolored buckeye +pachycephalosaur +satinwood +Chinese brown sauce +peep sight +straight man +quandong +chamois cress +nonfat dry milk +rosin bag +Leiden jar +Grimes' golden +spirillum +grass vetch +carillonneur +downy wood mint +melon ball +sweet calabash +chlamydospore +bombshell +sidewall +sprig +Indian button fern +globe pepper +rough-stemmed goldenrod +bocconia +bubble chamber +sand dab +plum-fruited yew +aecium +marrowfat pea +hobbyist +whipper-in +salad burnet +neckband +Tangier pea +sauce Louis +salad burnet +artist's loft +koumiss +Nazarene +cutter +scrim +drape +crab-eating dog +deckhand +bedroll +gaff +stifler +pink lady +great plains paintbrush +patternmaker +yoke +caryophyllaceous plant +angrecum +quadriplegic +grid +genlisea +aspic +water table +junket +signore +Mutillidae +proprioceptor +pivoting window +Indian poke +synchroscope +trichion +tarahumara frog +proctoscope +abomination +purslane speedwell +breast drill +Japanese barberry +mandrake root +breakable +salon +American watercress +take-up +entrenchment +cocktail sauce +Scotch asphodel +borough +matchmaker +Seneca snakeroot +pointsman +psephologist +clustered poppy mallow +onion thrips +nuclear-powered ship +organizer +deciduous holly +balsam willow +enzymologist +caraway +drip loop +dog laurel +Orangeman +sapsago +polymath +backplate +leathery grape fern +modillion +two-timer +handhold +consignee +white stringybark +nettle-leaved goosefoot +bookmaker +disk drive +doliolum +palmist +packinghouse +Spandau +Whipple's penstemon +sword grass +ribbon development +pearly-shelled mussel +winter heliotrope +rogue elephant +deck tennis +Venus's flower basket +football +shim +boatswain +blinks +armored catfish +hooded seal +outdoorswoman +water starwort +upholstery needle +pleurodont +silky anteater +cornmeal +lead-in +redfin pickerel +horse balm +Rydberg's penstemon +cascade transformer +fly poison +Volvaria bombycina +broad-leaved twayblade +pastry cart +body plethysmograph +waverer +hardware store +Parry's penstemon +European sanicle +strawberry geranium +cross-examiner +head gate +devil's tongue +hemiepiphyte +pine hyacinth +machmeter +spirit lamp +field judge +Rock Cornish +mayhaw +Sassenach +bog pimpernel +parallel interface +crowberry +roach +Aegyptopithecus +cajan pea +lapboard +cryostat +magnetic storage medium +white yam +Lombard +rhymer +bed and breakfast +bunya bunya +rifle grenade +caterer +collared pika +anti-submarine rocket +bookkeeper +Western mountain ash +profit taker +fruitlet +Knowlton's cactus +infernal +beefsteak begonia +lunula +emulsion +intermediate wheatgrass +titfer +European sea bream +bigeye scad +yak butter +kola +cone pepper +plesiosaur +ragwort +penal colony +black carpet beetle +lubber's hole +Stapelias asterias +yard marker +balloon bomb +Scythian lamb +armory +selsyn +marblewood +spirula +fatalist +hash head +armiger +Dom Pedro +white-chinned petrel +ballast +orthopter +greater water parsnip +clutch +largeleaf holly +Evangelist +king whiting +tuna fish salad +Muscadet +surpriser +jumping bristletail +proportional counter tube +Hamburg parsley +obstructionist +pus-forming bacteria +creep feed +stepbrother +janissary +control freak +trusty +trepan +King William pine +orthicon +geological horizon +molecular biologist +violator +pariah dog +Austrian +conciliator +Fauntleroy +packing needle +mazer +Saturday night special +leucocytozoan +coastal rein orchid +whirligig beetle +capitalist +breeches buoy +clubroot fungus +meadow spikemoss +Kichai +Spanish lime +land office +camera obscura +strafer +purple-stemmed aster +lusterware +valve +Roman nettle +isthmus +breadstuff +sealskin +maleo +bilge keel +carissa plum +fish fly +kolkhoznik +heath pea +cowage +hog sucker +Sam Browne belt +inductor +wild licorice +Socotra begonia +supernumerary +Angle +red shrubby penstemon +toilet kit +tawse +sweet bells +kawaka +brown soft scale +lyssavirus +betting shop +double-crosser +macrotus +climbing hempweed +poi +strip mall +deadhead +petit juror +tract housing +American mistletoe +lace-flower vine +precipitator +endoparasite +hairy wood mint +red snapper +Victorian +hog peanut +line of heart +opossum shrimp +plumcot +Bavarian blue +slops +light flyweight +oregano +sand myrtle +pocket battleship +curator +narc +hydraulic cement +plains pocket gopher +closed loop +pluralist +molter +Christmas bush +snuffers +slender knapweed +footwall +plage +caper tree +red siskin +tender +boat train +tipster +low-pass filter +student lamp +morosoph +japonica +bellows +herald +oyster plant +savory +mail +computational linguist +blade +winter crookneck squash +zoomastigote +blackmailer +richweed +dialectician +genip +plumed scorpionfish +jet bridge +thermopile +billy buttons +Brule +millwright +Arenaviridae +Jones' penstemon +monastic habit +genipap fruit +burnous +dairyman +top +crab-eating raccoon +quadrangular prism +pilot burner +weeder +trireme +boy wonder +man of letters +Catawba +high-muck-a-muck +light circuit +bloodworm +lappet caterpillar +half-and-half +office boy +saddle stitch +mistletoe cactus +false chamomile +Catalina cherry +workhouse +Jamaica quassia +britches +tooth shell +reduction gear +carrot pudding +balsam woolly aphid +handspike +aioli +silver hake +flour bin +wireman +gas-cooled reactor +aficionado +plus fours +gitano +gene chip +oilfish +ingenue +tulip orchid +late purple aster +pork and beans +envoy +lemon extract +milk bar +black huckleberry +ground roller +Connecticuter +siderocyte +Jacquard loom +chub +meat safe +stock cube +Australian sumac +purple sanicle +tailless tenrec +dog wrench +rainbow cactus +castor bean +scintillation counter +eohippus +pawnbroker +gauge boson +front man +early warning radar +bearing wall +Bourbon +sandwichman +sild +gravelweed +perishable +cembra nut +riflebird +quicksand +slate +sweeper +ship-towed long-range acoustic detection system +defamer +president +vitamin K3 +challis +tanekaha +bloodwort +grenadier +quietist +Zairese +fucker +foremother +gesneria +print buffer +salsilla +fissiped mammal +fender +consulate +acidophilus milk +Southern dewberry +snail darter +Panama redwood tree +dehydrated food +bush willow +coffee fungus +Sinologist +Mesoamerican +hood +large civet +deck-house +cyborg +smuggler +pepper sauce +cyberpunk +Grand Inquisitor +persona non grata +haggis +weeping tree broom +stop bath +modifier +coyol +conodont +yellow giant hyssop +optical pyrometer +Carolina moonseed +marinade +aspartame +false wintergreen +cityscape +philter +turnery +hemiplegic +chuck-will's-widow +vower +track star +myrtaceous tree +small civet +intelligence analyst +dogcart +yardman +cross bit +holometabola +platen +sweet cassava +Comstock mealybug +acute angle +Communist +alcohol thermometer +mountain hollyhock +Mead's milkweed +highjacker +Townes +congou +Astrophyton muricatum +lazybones +roughcast +pressure cabin +clinch +cinnamon +smoke bomb +quandong +tout +office-bearer +punctum +efficiency apartment +Queensland hemp +Ceylon bowstring hemp +newswoman +vermin +fetid bugbane +grantee +sanitary landfill +gluten-free diet +clabber +shillelagh +white lettuce +sweet coltsfoot +beggar's lice +samite +loser +flasher +water star grass +banana passion fruit +translator +artificial kidney +Virginia creeper +American crab apple +cactus mouse +nebbish +Ligustrum obtusifolium +vox angelica +stringer +hunter +know-it-all +scene painter +invalidator +jungle cock +basilica +coriander +California single-leaf pinyon +miles gloriosus +pina cloth +law agent +scarlet fritillary +keurboom +bailor +ramjet +seedling +rib joint pliers +ways +picket ship +Surgeon General +wasabi +marquis +clostridium perfringens +Helvella sulcata +furnace lining +kingwood +painted sandgrouse +plain wanderer +Indian madder +silver screen +bailey +dwarf spurge +Serbian +ball-buster +shaheed +Platte River penstemon +tensiometer +mute +nymphomaniac +Yokuts +arroyo willow +whipping post +class act +load +winged everlasting +periodontist +diarist +robber frog +diestock +curry powder +ratchet wheel +store detective +hog plum +prune whip +shortwave diathermy machine +Anabaptist +post chaise +Kennan +bean caper +delegate +orderly sergeant +celtuce +jumping bean +gowen cypress +puddingwife +registered nurse +West Saxon +rosita +gun room +nasotracheal tube +matchboard +flagship +Boswellia carteri +Canadian pondweed +wonder boy +sewer rat +dimetrodon +pantograph +marsh bellflower +angoumois moth +slippery dick +woolly indris +creme de cacao +dulciana +Jewess +Macadamia integrifolia +least shrew +don +diffuser +black-stem spleenwort +grouseberry +goniometer +annotator +sticktight +gossip columnist +speechwriter +capon +rock hind +Liederkranz +chandler +echocardiograph +sidelight +fisher +brocket +New Zealand daisybush +northern sea robin +roller bandage +peachick +pellet +pichi +plug fuse +spark coil +buckwheat +brood bitch +wedgie +dwarf bilberry +filigree +bull +queen +dodo +Salish +denticulate leaf +Western silvery aster +Prima +magnetic bottle +fetterbush +process-server +nainsook +mythologist +Piedmont glacier +hammerhead +niggard +Mound Builder +Kui +Nootka +highbinder +passenger pigeon +oblong +tickler coil +agnostic +succorer +esophagogastric junction +dressmaker's model +bombshell +social anthropologist +gildhall +orpine +pterodactyl +bristly sarsaparilla +Lane's Prince Albert +hognose bat +salesgirl +lubricating system +electric catfish +wrap +Jacksonian +chard +cherry laurel +foreground +beadsman +Kolam +amniote +frozen pudding +acid head +poor box +depositor +coattail +pallas's sandgrouse +mason's level +English lady crab +skeg +cruel plant +petrolatum gauze +tuna +swivel +stock-in-trade +perisperm +civies +Phyllostomus hastatus +alienor +Verdicchio +guard's van +onion butter +moviegoer +planter +citrange +box huckleberry +iconoscope +familiar +helmsman +baby boomer +constructivist +American bog asphodel +whorled caraway +simple pendulum +viviparous eelpout +Job's tears +holdout +sour salt +poison bush +dusky-footed woodrat +golden algae +granadilla tree +telethermometer +crossbar +thrift +African bowstring hemp +dog in the manger +hayrack +gold-crowned kinglet +prolonge +doge +pencil +discount house +mulligan stew +Nonconformist +virologist +gregarine +facula +rocket scientist +thin-shelled mussel +oospore +annual salt-marsh aster +Afrikaner +metallic +julienne +culverin +cleavers +Berliner +mudhif +thorny skate +brown lemming +yellow colicroot +cooling system +large-leaved magnolia +free-reed +canyonside +preemptor +stake +Brucella +anti-G suit +pleximeter +squire +salsilla +write-in candidate +lowland burrowing treefrog +flare star +dwarf hulsea +jobber +mangel-wurzel +quagga +red-skinned onion +positive pole +Pteropus capestratus +jug wine +stomacher +standee +bladder worm +hakim +house of correction +pelisse +golden mole +temporizer +rose apple +drove +umbrellawort +holy of holies +lawyer cane +smooth lip fern +anode +astatic coils +zip gun +feverroot +self-heal +expansion bit +salt reed grass +field pussytoes +nutmeg hickory +cryptic coloration +Venus's girdle +Hunkpapa +Calostoma cinnabarina +raft foundation +May apple +pygmy mouse +prokaryote +yellow-green algae +Bermuda maidenhair +withdrawer +coelacanth +Elliott's goldenrod +driftfish +epicyclic train +bowl +swamp dewberry +corbel step +sadist +party line +anti-American +mining engineer +Amur privet +conidium +Gastrocybe lateritia +lithia water +chaulmoogra +Rough Rider +Guinea pepper +glade mallow +pitcher sage +whitecup +shanghaier +low St Andrew's cross +phonologist +cocobolo +perfumery +visor +prison chaplain +belt +ingesta +literary critic +industrial watercourse +reckoner +pursuer +Kinetoscope +Kuiper belt +hyperope +raw recruit +Galiella rufa +Prince Albert yew +slit trench +usher +tenderfoot +white-rayed mule's ears +browser +piccalilli +bran +giant buttercup +water lobelia +arborescent plant +echinus +dryland blueberry +struggler +platyctenean +Geordie +domatium +twenty-two rifle +keteleeria +sports editor +chorus girl +Hakham +dry-bulb thermometer +onomancer +double-bitted ax +Girondist +bottle bank +thyrsopteris +bandwagon +star anise +armored car +dhawa +Bessemer converter +mutineer +paradise tree +tupik +centurion +mending +chowchow +margrave +International Grandmaster +African hemp +catafalque +leptodactylid frog +forcemeat +tank shell +pill +barbecue pit +worthy +lady's maid +evergreen +Jesuit +South American staghorn +rigger +suffragan +imperialist +spherical angle +grey lemming +kitchen police +tree swift +coliphage +archaist +Conservative +rib +exegete +Mendelian +tragedian +steerage +Paleo-American +obeche +garlic +grapefruit peel +accommodating lens implant +half blood +barrelfish +catgut +lanceolate spleenwort +hardliner +frieze +name dropper +carrack +huckster +onion bread +magnetic head +pease pudding +raisin moth +negative magnetic pole +electroencephalograph +bunji-bunji +synchroflash +Mornay sauce +stencil +winged pigweed +Nesselrode +MEDLINE +licorice +mainspring +melilotus +duke +experimenter +Napier's bones +four-minute man +pin-tailed sandgrouse +toolmaker +pogge +rootstock +baton +pricket +creeping snowberry +anomalops +nester +devourer +apolemia +Maricopa +pine-barren sandwort +larvacean +American dewberry +escalope de veau Orloff +gig +myrtle +pitsaw +Lutheran +fish house punch +gnathostome +intake valve +molasses taffy +clammy locust +vandyke beard +Atlantic tripletail +planktonic algae +estradiol patch +flummery +cytologist +sectarian +oil meal +tomtate +mediterranean anchovy +aspersorium +argonaut +porkholt +sheep ked +algometer +Adventist +false goatsbeard +snake polypody +streetwalker +shelver +adoptee +highflier +pitch apple +prairie rocket +fish mousse +viroid +deckle +manila tamarind +observer's meridian +pincurl clip +hardstem bulrush +gossamer +brookweed +Druze +hug-me-tight +accessory before the fact +oilman +Comanche +Marine +bedlamite +Chinese cork oak +squawbush +false miterwort +walk-on +Cynopterus sphinx +brandyball +landlubber +arrowroot +cape forget-me-not +galoot +tabor pipe +checker +Levant cotton +paddle box +murderess +smirker +fuddy-duddy +withdrawer +newel +shade +pink disease fungus +tipu +sweet sultan +aeronautical engineer +tall gallberry holly +acarid +conqueror +cucumber +film director +ordinary +salon +closet queen +allegorizer +tonka bean +flax rust +negative pole +dagame +dentist's drill +mock privet +micropyle +contributor +dark horse +climbing corydalis +cosmotron +land agent +Big Blue +Cynic +tassel flower +lyrate leaf +Minuteman +Dutch-elm beetle +Hessian fly +flower girl +West-sider +window dresser +skinny-dipper +whitebait +out-and-outer +hooker +amicus curiae +jack +camwood +stockist +black root rot fungus +Jamaica dogwood +diaphragm +Holocentrus ascensionis +roselle +black maire +Pygmy +fumigator +lame duck +mudder +hydraulic transmission +conning tower +phoronid +batfish +hearing dog +monohybrid +whaling gun +Cockcroft and Walton accelerator +allemande +seasoner +epileptic +ammonia clock +Young Turk +lanseh tree +urceole +cafe noir +poster girl +Oglala +deadeye +manna lichen +positive pole +cinch +lyricist +hermaphrodite +kidney stone +dilator +number one +frotteur +kaffir bread +fish knife +tarragon +adjuster +potato wart fungus +Florida pompano +conductor +corbie gable +rounders +Catha edulis +bender +recruit +Uruguayan +subject +bunghole +day boarder +pocketed bat +Oxonian +owner-occupier +yellow-leaf sickle pine +devisor +exhibitor +looking glass +shipowner +crooked-stemmed aster +calico +dash-pot +defilade +Confucian +egg-and-dart +irreligionist +lepton +self-rising flour +diving bell +Brahui +shop girl +maximum and minimum thermometer +Dalmatian laburnum +correspondent +subduer +nonperson +Reaumur thermometer +rough-leaved aster +jacksmelt +pinfold +magneto +ex-wife +round-leaved rein orchid +purloo +American shrew mole +sweet sand verbena +polymastigote +outfitter +curled leaf pondweed +Italian dressing +borderer +ambusher +geebung +four-stroke engine +small ship +homeopath +gynostegium +political prisoner +Radiigera fuscogleba +ensiform leaf +rhizoctinia +satyr orchid +rue +bouillon cube +flip +prophyll +tilefish +periselene +prima donna +choker +laminar flow clean room +Hooker's orchid +fish joint +mombin +remover +array +coelostat +autophyte +consigner +Damaraland mole rat +gasman +public works +lye hominy +pearlfish +piassava palm +Georgian +uxoricide +confessor +community center +epigone +tagger +abrading stone +cryoscope +nautch girl +reliever +Cartesian +Indian beech +protoplasmic astrocyte +fundamentalist +mustard sauce +crank +houselights +five-point bishop's cap +comedienne +triangle +presentist +beaugregory +dreamer +Wave +blue mockingbird +Barbados gooseberry +ten-spined stickleback +papoose +silky pocket mouse +holdup man +agent-in-place +suspensory +emigrant +ropemaker +bookbinder +jumby bead +undershrub +Killarney fern +sheep bell +city slicker +equerry +pea crab +down-and-out +blackmouth bass +shirtmaker +lister +UNIX guru +snipefish +gimbal +maisonette +haircloth +Ranvier's nodes +pigmy talinum +tribute album +msasa +hydroxide ion +madame +four-pounder +prophet +sloganeer +field-effect transistor +nude mouse +canteen +Calostoma lutescens +buteonine +sunlamp +Uruguay potato +Spanish tamarind +Prince-of-Wales'-heath +kishke +caprifig +chincapin +hegari +alarmist +bathtub gin +astatic galvanometer +Calostoma ravenelii +marang +tussah +coin box +bugleweed +hacker +frontal eminence +timekeeper +shunt +bicycle clip +mustang mint +caesium clock +hospice +glenoid fossa +archpriest +ex-gambler +incrustation +salvager +Donatist +violator +lamb succory +hygroscope +oilbird +sharptail mola +showplace +corn syrup +flashlight fish +pulse timing circuit +anchovy paste +fascista +chigoe +divan +Druid +squad room +Huntingdon elm +buffalo carpet beetle +carper +corn lily +goats' milk +assault gun +cockpit +Lochaber ax +Visigoth +occupier +Basotho +criminologist +spindle +Rosicrucian +Cornishwoman +musk kangaroo +artificial skin +pandurate leaf +Parkia javanica +roundhead +tea-like drink +basidiolichen +unguiculate +stepmother +Nauruan +gutta-percha tree +bloodberry +scarlet haw +marupa +censor +algebraist +pelvimeter +whaler +cowhide +paparazzo +biochip +internationalist +Yukon white birch +hangar queen +chlamydia +puttee +Pipturus albidus +pearly razorfish +sea moss +burglar +hoary golden bush +colter +drey +bushman's poison +maxillaria +gnetum +deadeye +shittah +swamp oak +damper block +deepwater squirrelfish +truffle +cangue +paleolith +lawyerbush +sorehead +Texas snowbell +Tremella reticulata +quarter +keelboat +dimity +whiner +Wagnerian +myrmecophyte +frontierswoman +pyrometric cone +big-tree plum +puppy +galbulus +hod +winceyette +carriage wrench +dictostylium +farmland +infanticide +Jacob's rod +threadfish +monocline +inamorato +leaf miner +purple cress +passer +black-fronted bush shrike +silverrod +bootmaker +segregate +captive +Edmontonia +spherometer +television transmitter +bladder +Saratoga spittlebug +dynamometer +lodge +smooth darling pea +Cossack +wake-up call +Olmec +sutler +molasses kiss +corner post +rattlesnake weed +yardmaster +adder +rhinoscope +referral +ulster +pantaloon +counterspy +gadgeteer +heart cherry +hospital chaplain +Clydesdale terrier +plank-bed +Russian thistle +actinometer +dyspeptic +common wolffia +firewall +seidel +potato moth +soapweed +seif dune +thill +cosmographer +absolver +halberdier +fire control system +kai apple +bastard pennyroyal +Big Brother +broadcast journalist +Albatrellus dispansus +citrophilous mealybug +split end +nickel-iron battery +Newtonian +gas maser +thumbstall +anaspid +dusky-footed wood rat +latitudinarian +flatbrod +schizocarp +niqaabi +flight surgeon +gyrocompass +Polyporus tenuiculus +Utopian +mailboat +spellbinder +undercoat +cassareep +typical jerboa +photocathode +katharometer +bight +fur-piece +penetration bomb +malik +Siberian millet +nanomia +Wykehamist +tosser +gyrostabilizer +microwave diathermy machine +crystal set +wall +legatee +alfalfa +angwantibo +charioteer +piano maker +African mahogany +Morlett's crocodile +taro +parallel circuit +cush-cush +etymologist +matriculate +neem seed +cornerback +kingfisher daisy +redoubt +blastomycete +peplos +costumier +publican +tobogganist +semolina +myrmidon +parricide +gymslip +whoremaster +cryptocoryne +header +platitudinarian +barleycorn +spiral bandage +reciter +abecedarian +dance +wrymouth +bilberry +Liopelma hamiltoni +streamliner +Fordhooks +fixed phagocyte +radiobiologist +neurologist +Selkup +dollarfish +cascade everlasting +acrodont +boarhound +midstream +theatrical producer +abhorrer +goldsmith +photometrist +Anglo-Saxon +rugel's plantain +sable +workmate +ferule +ankus +earleaved umbrella tree +Passamaquody +timucu +Mexican pocket mouse +yerba santa +Rochon prism +apomict +monocarp +sweet unicorn plant +common winterberry holly +archivist +drypis +paretic +fly-by-night +white-berry yew +Schoolman +blue cheese dressing +vintager +squatter +Euphausia pacifica +corrugated fastener +yellow henbane +Croesus +almoner +analphabet +acoustic delay line +sheep frog +workhouse +horseleech +venturer +pond-scum parasite +Pyrenees daisy +plagiarist +Truncocolumella citrina +rerebrace +group captain +caddis fly +hot-rock penstemon +kanzu +stylopodium +slopseller +rauli beech +starter +ootid +statesman +distributor cam +ascot +falcon-gentle +Duplicidentata +spotted antbird +heliometer +false buckthorn +Allegheny spurge +Cavalier +dart +photocoagulator +master-at-arms +kei apple +baldachin +crapshooter +gametangium +white hope +chipotle +spike heath +Scotch woodcock +Florentine +differential analyzer +Mitrula elegans +wet cell +basil balm +Circassian +corn cake +bouncing betty +vice-regent +lagerphone +ketembilla +whoremaster +fork +tetrasporangium +trifler +pill head +life-support system +quartermaster general +tobacco thrips +officeholder +teredo +toyon +Sundacarpus amara +Phytophthora citrophthora +naif +lobbyist +alligator wrench +bully +heavy +toxicologist +radio chassis +waterdog +drive line +kaffir cat +foster-brother +breakax +curette +traditionalist +pipe vise +striped button quail +gawker +homeotherm +schoolyard +battue +kalansuwa +deviationist +Bolshevik +transponder +pungapung +iron +Eyeish +roccella +manglietia +Tory +print seller +Texas Ranger +otter shrew +seconder +shellflower +outlier +party man +wold +hayfork +oncologist +framer +co-beneficiary +ocean pout +Chinese angelica +scrimshaw +air attache +false gromwell +standing press +fringepod +specifier +automatic choke +durum +yenta +wassailer +reeler +signora +beach pancake +common booklouse +pellicle +backroom boy +den mother +associate +Unitarian +gambist +brookweed +clubroom +cat's-tail +playboy +self-registering thermometer +doorstop +bennet +yak's milk +escapee +quail bush +sparge pipe +coast boykinia +screw key +half gainer +aggravator +cotton mill +tailor's chalk +free agent +cotton mouse +deadhead +bunny +turpentine camphor weed +amaranth +ceratodus +red lauan +beam-ends +thermograph +wally +Toda +handrest +commissary +oak-leaved goosefoot +manufacturer +voicer +Jafnea semitosta +bench hook +finder +abyssal zone +rabbitwood +Hercules'-club +epicarp +declinometer +camp follower +signaler +Australian pea +putz +qadi +banded palm civet +egg timer +regnellidium +calisaya +harvestfish +sound spectrograph +side-wheeler +glomerule +woolly rhinoceros +Black Muslim +horticulturist +ornithomimid +cryometer +battlefront +gametophyte +airmailer +cuisse +nakedwood +baseball club +slasher +anise +leatherleaf +leatherjacket +horned pondweed +gofer +Saigon cinnamon +barong +blazer +twinkler +skeleton shrimp +dial +floorwalker +case shot +flannelbush +cultivated parsnip +Jane Doe +few-flowered leek +nogging +placer miner +muzzler +serge +lion-hunter +capulin +Wandering Jew +ascidian tadpole +hispid pocket mouse +southern spatterdock +milk wagon +junior middleweight +duck sauce +promycelium +protozoologist +cascade liquefier +tout +longheaded thimbleweed +charcoal burner +footage +slop +bridge agent +miller's-thumb +Job's comforter +marocain +tanker plane +lancetfish +knocker +toque +ordinand +umbrella bird +favorite son +hare's-foot bristle fern +business traveler +plotter +Asiatic shrew mole +tallyman +stump +Paleacrita vernata +index register +mortgagee +accuser +codger +sand rat +seaside centaury +chiropractor +Florida smoothhound +dwarf sperm whale +T-man +sannup +dragonhead +numdah +alkali grass +gynobase +kymograph +ascolichen +steward +waterline +Nazarene +filer +lapidary +muncher +wincey +scyphus +question master +besieger +worldling +docent +facing +atmometer +quern +puerpera +three-decker +calliope +wild red oat +bailee +flame pea +cattle cake +theist +yellowtail flounder +cosmopolitan +rocket engineer +vouchee +Turkoman +hard sauce +Thousand Island dressing +assayer +messmate +mutilator +oyster bar +flame tokay +countess +prairie mimosa +microsporangium +cotter +townsman +paring +fundraiser +simperer +Comrade +orlop deck +power takeoff +cattleship +prime meridian +Javanthropus +scriptorium +curandera +long-clawed prawn +maestro +paster +potato tuberworm +chachka +junkyard +cape yellowwood +reentrant polygon +Liberian coffee +restaurateur +Alsophila pometaria +Jekyll and Hyde +electrophorus +Scomberomorus maculatus +manipulator +gromwell +chicken provencale +ashram +mangel-wurzel +shamrock pea +dossal +adducer +erection +Mysore thorn +smoothie +chufa +brace wrench +victualer +litterer +linstock +Protium guianense +palfrey +banyan +klieg light +dangleberry +trooper +yaupon holly +quitter +tradescant's aster +nullipara +melter +devil's urn +ghostwriter +mouth +analogist +Creek +sonic depth finder +fucker +locus of infection +mortician +esophageal smear +locum tenens +conic projection +aroeira blanca +bellarmine +night porter +automobile mechanic +codpiece +Munro +cottonweed +scoinson arch +tinderbox +frozen food +waterproofing +Egyptian henbane +lash +transactor +American smooth dogfish +existentialist +grabber +Sonoran lyre snake +Rufous rubber cup +colors +weekend warrior +power user +perennial salt marsh aster +Puritan +Apalachicola rosemary +anecdotist +tosser +moth bean +agnostic +stretcher-bearer +browntail +optimist +brewer's mole +astronomy satellite +flat file +rust mite +tuberous plant +day laborer +buster +trapezoid +bevatron +nonresident +Streptomyces griseus +mangosteen +customer agent +hero worshiper +suicide bomber +procellariiform seabird +archiannelid +reaction turbine +distortionist +bulldog wrench +grainy club +scalp +Aztec +scow +globigerina +pedant +heartleaf manzanita +kanchil +low gallberry holly +containment +scandalmonger +rose-colored starling +Powhatan +addle-head +Chilean rimu +Atlantic sea bream +arthrospore +ramrod +root climber +Kalapooia +roach clip +Schreiber's aster +horseradish +albino +Kshatriya +trombidiid +blasting cap +body pad +brachium +shallu +Wynnea americana +slender centaury +munj +upset +wind tunnel +cottonwick +airing cupboard +pepper shrub +ambrosia +languisher +chosen +rose globe lily +purple apricot +costia +sloop of war +sultana +frontlet +booster +sargassum fish +broad-leaved montia +rifleman bird +stillroom +amoralist +enginery +meter maid +fitment +southern bog lemming +Athenian +clincher +cusk-eel +mackintosh +diaphone +corozo +Australian reed grass +czar +spongioblast +Eurafrican +airhead +Shahaptian +Roman +pollinium +tourist class +halogeton +stamper +emperor +malingerer +tramp steamer +Peziza domicilina +pilot cloth +stenopterygius +cost accountant +Queen's Counsel +wine-maker's yeast +poppet +cage +rowlock arch +landgrave +bearded wheatgrass +stink bell +quaker +undesirable +algarroba +resistance pyrometer +exorcist +carib wood +guvnor +border patrolman +bathhouse +licenser +headman +rentier +pine spittlebug +nut-leaved screw tree +paraduodenal smear +apron +necker +smilax +Alpine besseya +creeper +castle +ground bait +Queensland grass-cloth plant +sclerotium +great yellowcress +fat farm +Stoker +hoop snake +elixir of life +Trotskyite +home buyer +wheat berry +Tutelo +semi-climber +utahraptor +wet-bulb thermometer +packrat +hygrophyte +darter +sketcher +refiner +camlet +midgrass +compound +tarwood +Colorado River hemp +toiler +abstractor +override +dwarf pipefish +plodder +briefcase computer +trunk hose +brown butter +valve-in-head engine +cymbalist +explosive detection system +horsewoman +boutonniere +chinchilla +venerator +scourer +exarch +cohune nut +ayapana +continental divide +cosigner +stalker +pyxie +Genet +Macowanites americanus +open-hearth furnace +water chestnut +American frogbit +tarwood +cutter +scout +burr +upsetter +grist +tagasaste +mouthpiece +palette +rattan +letterman +Exmoor +Methodist +eelblenny +marasca +slide valve +ventilation +saddle hackle +Yakut +flux applicator +air traveler +murder suspect +Cynocephalus variegatus +idolizer +Surgeon General +nutlet +little-head snakeweed +germ tube +fellow traveler +raceabout +commodore +czar +anamorphosis +treelet +girlfriend +groundnut +sideline +giant star grass +goffer +spark lever +oubliette +processor +tare +plodder +extremist +Kipp's apparatus +gripsack +S wrench +viscountess +bridgehead +cascarilla +Asiatic flying squirrel +protoceratops +equerry +difflugia +princeling +moonlighter +aspergill +common flat pea +Utahan +imperial mammoth +plantain-leaved pussytoes +Boott's goldenrod +bootlegger +reed pipe +runcinate leaf +onion salt +nitrite bacterium +introvert +duck +New World opah +goliath frog +heterostracan +disrupting explosive +haggler +candlenut +false bugbane +returning officer +eudiometer +ship-breaker +metazoan +mandarin +patka +gill net +cavity wall +armilla +rainmaker +dealfish +orderly +gleaner +muffin man +house sitter +alto +sand devil's claw +vulcanizer +appendicularia +boron chamber +chess +bitok +anchovy butter +dropout +flour mill +bishop +escapist +scapegrace +stanhope +smooth winterberry holly +upstager +stalking-horse +pony +prairie gourd +parabolic mirror +Polaroid +slasher +lap +garlic butter +sendee +German millet +hairy honeysuckle +Swiss canton +Scleroderma flavidium +red goatfish +telegraph plant +Jungian +garment cutter +mallee hen +stranger +driveway +schooner +Paiute +cisco +trestlework +sipper +shanny +romanticist +Molly Miller +mountain rimu +odd-leg caliper +bitumastic +Western Australia coral pea +labor coach +latchkey +harpulla +solitary pussytoes +chop-suey greens +coil +guimpe +diapir +Osage +gutta-percha tree +giant eland +reticulation +garden huckleberry +quick study +Hudson bay collared lemming +coreligionist +Lancastrian +stumblebum +omnirange +seersucker +Potemkin village +Rhea Silvia +symphonist +bolti +jaw +jaconet +page +visiting fireman +haulm +p-n junction +landlubber +yellow jack +triclinium +souari +invader +fire walker +Luddite +Plott hound +hemming-stitch +winker +star-duckweed +craniometer +Arabidopsis lyrata +loser +cypripedia +trimmer arch +cookhouse +pink fivecorner +transfer +ringleader +northern pocket gopher +moke +blockade-runner +cyclostome +web-spinning mite +Whig +transcriber +malahini +sawyer +patent log +paca +tragedian +thermojunction +soffit +black buffalo +foreigner +applecart +brit +pole horse +white mullet +argentinosaur +Homo soloensis +bounty hunter +decumary +hand +paperboy +Smitane +windowpane +Java man +Wynnea sparassoides +prune +middy +lilliputian +sorb +pyrostat +guest worker +hold +leaseholder +vegan +humanist +salinometer +piton +zygospore +means +night rider +tetraspore +archipelago +radiomicrometer +nitpicker +spot weld +slicer +girlfriend +round-tailed muskrat +cock's eggs +Shavian +bay +nuclear chemist +planetarium +hiccup nut +Marylander +milling +microsporidian +brown cup +Strophanthus kombe +little skate +emancipator +paperhanger +archaeopteryx +maigre +Mastotermes electrodominicus +procurer +seizure-alert dog +homeboy +cotton strain +mute +siren +spearnose bat +phenacomys +gayal +arsenal +pitchfork +Port Jackson heath +cud +magnetic core memory +interferometer +water jacket +account executive +hodoscope +window oyster +sudatorium +syncopator +loment +hypertensive +smoothbark +Geogia holly +nailhead +African holly +musette +chafeweed +microflora +derrick +strawworm +shogun +queen post +jerboa kangaroo +columbo +royal +sourball +solenogaster +cardsharp +Homo habilis +intaglio +calf's-foot jelly +flotsam +skirret +baronduki +chyme +shovel hat +Welsh +monoplane flying fish +groundfish +tablet-armed chair +swan dive +Indian club +colonial +cassiri +pyramidal tent +praya +silk vine +time clock +button snakeroot +clews +Korean lespedeza +diffuser +ripping bar +puttyroot +nipple shield +headpin +juneberry holly +hub-and-spoke +laver +weldment +plain flour +hoosegow +dudeen +grey skate +line of life +mung +arariba +Newtown Wonder +rock candy +side chapel +castor sugar +narrow-leaved white-topped aster +babassu nut +puka +rings +catchall +heat shield +caroche +oxbow +Australian coral snake +tapper +sporangiophore +fenugreek +spruce gall aphid +gouache +cutoff +private line +pod +cargo hatch +nailhead +penile implant +geophyte +small-leaved linden +deepwater pipefish +paperhanger +hairy spurge +Persian lamb +subtropics +feed grain +clarence +nonparticipant +scorpioid cyme +hand brake +tiller +Geglossaceae +albacore +monochrome +goa bean +bur +tongue worm +psittacosaur +frog's lettuce +pectoral +terreplein +light filter +fishpaste +dry point +grison +feterita +dolichocephalic +oenomel +stretcher +swag +cheval-de-frise +mountain beaver +scammony +discus +leatherleaf saxifrage +wharf rat +Dominique +pelycosaur +depth gauge +bishop +archespore +true anomaly +silver jenny +mercy seat +kelp +oviraptorid +acrylic +Chinese pea tree +meat house +bilge well +Temperate Zone +whale louse +balbriggan +briefcase bomb +pump-type pliers +oil +sour gourd +Jewbush +lunette +Chinese paddlefish +pyxidium +beechnut +calabar bean +grugru nut +gib +blunt file +cataphyll +megasporangium +blockbuster +sliding seat +hogchoker +calceus +Connarus guianensis +honest woman +survivor +second balcony +tempera +Calvary clover +murine +outwork +bogy +elephant's-foot +conning tower +set square +blackfly +stirk +Streptomyces erythreus +blade +goldfield +snowball +mortal enemy +waltzer +shoal +galley +hitchhiker +lithophyte +brisling +scauper +esophagoscope +grab +subtracter +philosopher +duplex apartment +southeastern pocket gopher +bonduc nut +reverberatory furnace +grader +lamp house +northern bog lemming +brotula +ornithopod +ptyalith +obturator +perpetual motion machine +range pole +Africander +curvet +daisy print wheel +floor +collector +mutant +tuck +fore-and-after +senega +buckler mustard +louvar +Tarsius glis +culdoscope +Spanish fly +steering gear +hatchet man +museum +saw set +cambric tea +comber +thermohydrometer +stationer +chalcis fly +bryanthus +whipstitch +harvest mite +rock gunnel +time bomb +rariora +pigfish +apetalous flower +head shop +horned whiff +sandpit +tachistoscope +sundries +taffrail +caller +monofocal lens implant +Dover's powder +souari nut +crowbait +render +Shakespearian +hagberry +megatherian +magus +hatchel +mangabey +garroter +piedmont +cope +barrio +psychodid +rigout +distributor +croupier's rake +sarcenet +narrow-leaved water plantain +treenail +biped +lanternfish +overdrive +barndoor skate +picket boat +amber lily +sawpit +sand lance +bucket shop +common beech +laundry truck +surtout +grogram +tampion +escape hatch +interstice +shop bell +snake mackerel +nakedwood +tumbrel +mericarp +mountain paca +cab +big board +cringle +eusporangium +shipping room +coal chute +dumbwaiter +Smiledon californicus +man-at-arms +cartridge +deinonychus +pigeon pea +screw bean +spectacle +floorboard +cutting room +low-warp-loom +proconsul +sabicu +genipap +clapper +aquifer +archaeornis +belly flop +Protium heptaphyllum +interrupter +high-warp loom +knight +wiper +impression +poker +Pithecanthropus +sable +guardroom +tenter +wellhead +raja +strickle +sodomite +mountebank +sand leek +Barbados gooseberry +shuffler +sensory fiber +crab-eating opossum +etching +rare bird +scup +fagot +negro vine +hutment +droshky +nephoscope +lady chapel +cutty stool +release +vestiture +buff +standard +Tabernacle +vascular ray +snakewood +chlorobenzylidenemalononitrile +limnologist +pouched mole +microwave linear accelerator +Mastotermes darwiniensis +wind tee +orange bat +open sight +carpospore +rampant arch +sabbatia +cursor +post exchange +bellpull +center +cyclostyle +canonist +pygmy sperm whale +moa +king +pass-through +angioscope +marrow +hookup +revetment +acanthocephalan +good Samaritan +apatosaur +web spinner +dixie +ommastrephes +crossbench +candlewick +jack +light arm +caisson +kaki +quandong nut +Meuniere butter +coquilla nut +mast +black +twitterer +bluethroat pikeblenny +shielding +water-shield +urolith +elephant bird +clearway +dark lantern +schizopetalon +press +Nazi +sugarberry +Maltese +stevedore +hair shirt +party wall +gainer +blackheart +nothosaur +cavetto +evergreen bittersweet +chemical bomb +calpac +shingle +turnpike +animator +heaver +isoclinic line +death knell +liner +anathema +aerie +razorback +Ichyostega +pound net +French dressing +mottle +yard +string tie +bell seat +brattice +battering ram +sierra +pompon +vertex +stomach pump +electrolytic cell +escolar +telpher +roadhouse +cerecloth +tartare sauce +letter case +whale sucker +hob +teg +canvas +strickle +hectograph +Cartagena bark +mail car +acinus +freedom rider +bread sauce +picture window +Rhizopogon idahoensis +pinprick +mass spectrograph +ringer +devil's cigar +salad cream +marlberry +airbrake +Clark cell +yellow-throated marten +wire gauge +dinoceras +aba +harpoon log +plate rail +mustard plaster +coelophysis +journal box +puce +ballcock +quartering +izar +clinid +whirler +turnspit +deathbed +pottle +shot +doubler +Coryphaena equisetis +English sole +chicken feed +borrow pit +mylodontid +Chilean nut +Kundt's tube +ling +asthenosphere +reseau +death seat +immovable bandage +peppermint patty +lecturer +electron multiplier +bear claw +hyacinth +beaked salmon +toehold +scull +snowball +gangsaw +fiber +oxeye +lashing +Beckman thermometer +fence +cantilever +dinner theater +Reynard +jag +umbrella plant +camera lucida +beaver +slug +yellowfin croaker +Sibley tent +rat-tail file +anchovy pear +soldier +cackler +chaise +Pitot-static tube +minniebush +Episcopalian +oleaster +ejaculator +wavy-leaved aster +knight +rack +real storage +magnetic mine +cocoa plum +vesiculovirus +birch leaf miner +water chevrotain +rudapithecus +torpedo tube +itch mite +warren +loft +washerman +terrace +nonstarter +shit +platform +caudex +ground control +Ostariophysi +slopshop +Peruvian cotton +crystal oscillator +plastic bomb +bar bit +watering cart +Asiatic sweetleaf +artificial joint +chariot +casern +charge-exchange accelerator +display adapter +hornpipe +honey bell +planula +Nephthytis afzelii +hame +ranter +trachodon +synchrocyclotron +splasher +heterotroph +Nicol prism +Himalayan rhubarb +headfast +put-put +bitter almond +parr +scantling +power breakfast +madder +Catalpa bignioides +rose of Jericho +spark chamber +rhizome +beard worm +supper club +negro peach +keratoscope +wain +apple aphid +planking +time-delay measuring instrument +sternpost +sicklepod +lake bed +gatherer +monotype +dead-man's float +poison gas +dicynodont +organism +cell +person +animal +plant +food +artifact +dressage +contact sport +outdoor sport +gymnastics +track and field +jumping +high jump +skiing +water sport +swimming +dive +floating +skin diving +rowing +boxing +sledding +tobogganing +wrestling +skating +ice skating +roller skating +racing +boat racing +riding +equestrian sport +cycling +blood sport +hunt +fishing +angling +casting +athletic game +outdoor game +golf +field game +field hockey +football +American football +ball game +baseball +court game +badminton +basketball +tennis +sport +Seder +scavenger +bottom-feeder +work animal +beast of burden +pack animal +domestic animal +marine animal +female +male +young +young mammal +pup +cub +lion cub +tiger cub +microorganism +arbovirus +herpes +herpes zoster +reovirus +moneran +cyanobacteria +enteric bacteria +actinomycete +streptomyces +diplococcus +parasite +ectoparasite +protoctist +protozoan +sarcodinian +ameba +ciliate +alga +brown algae +green algae +sporozoan +cypriniform fish +cyprinid +carp +domestic carp +shiner +catostomid +buffalo fish +cyprinodont +killifish +topminnow +squirrelfish +stickleback +pipefish +embryo +fetus +blastula +chordate +cephalochordate +tunicate +ascidian +vertebrate +aquatic vertebrate +jawless vertebrate +lamprey +hagfish +cartilaginous fish +holocephalan +chimaera +elasmobranch +shark +mackerel shark +mako +requiem shark +dogfish +smooth dogfish +spiny dogfish +smooth hammerhead +smalleye hammerhead +shovelhead +ray +sawfish +roughtail stingray +butterfly ray +eagle ray +manta +skate +bird +gamecock +night bird +ratite +passerine +oscine +accentor +lark +pipit +finch +canary +dark-eyed junco +New World sparrow +bunting +honeycreeper +sparrow +grosbeak +towhee +weaver +grassfinch +tyrannid +New World flycatcher +kingbird +pewee +cotinga +antbird +Old World flycatcher +thrush +nightingale +Old World chat +warbler +kinglet +Old World warbler +New World warbler +flycatching warbler +New World chat +yellowthroat +New World oriole +northern oriole +meadowlark +New World blackbird +grackle +Old World oriole +starling +myna +corvine bird +crow +Old World jay +common European jay +New World jay +blue jay +Canada jay +Rocky Mountain jay +nutcracker +European magpie +American magpie +Australian magpie +wren +marsh wren +thrasher +New Zealand wren +creeper +titmouse +black-capped chickadee +Carolina chickadee +swallow +martin +tanager +shrike +butcherbird +bush shrike +bowerbird +European water ouzel +American water ouzel +vireo +waxwing +bird of prey +hawk +black kite +swallow-tailed kite +white-tailed kite +harrier +falcon +peregrine +caracara +eagle +young bird +sea eagle +Aegypiidae +Old World vulture +griffon vulture +bearded vulture +Egyptian vulture +black vulture +New World vulture +buzzard +condor +Andean condor +California condor +black vulture +king vulture +owl +horned owl +scops owl +amphibian +salamander +newt +Pacific newt +ambystomid +climbing salamander +web-toed salamander +frog +true frog +true toad +spadefoot +tree toad +cricket frog +tongueless frog +reptile +anapsid +diapsid +chelonian +turtle +sea turtle +ridley +snapping turtle +musk turtle +diamondback terrapin +Western box turtle +tortoise +soft-shelled turtle +saurian +lizard +gecko +iguanid +spiny lizard +fence lizard +horned lizard +skink +teiid lizard +racerunner +plateau striped whiptail +Chihuahuan spotted whiptail +western whiptail +checkered whiptail +agamid +moloch +anguid lizard +venomous lizard +lacertid lizard +chameleon +monitor +crocodilian reptile +crocodile +alligator +caiman +armored dinosaur +ankylosaur +bone-headed dinosaur +ceratopsian +hadrosaur +saurischian +sauropod +theropod +ceratosaur +maniraptor +synapsid +pterosaur +ichthyosaur +snake +colubrid snake +smooth green snake +rough green snake +racer +blacksnake +whip-snake +rat snake +bull snake +common kingsnake +milk snake +common garter snake +ribbon snake +Western ribbon snake +common water snake +water moccasin +grass snake +viperine grass snake +sand snake +lyre snake +blind snake +indigo snake +constrictor +boa +python +elapid +coral snake +coral snake +cobra +mamba +black mamba +krait +viper +pit viper +rattlesnake +timber rattlesnake +arthropod +arachnid +false scorpion +whip-scorpion +spider +European wolf spider +acarine +hard tick +Ixodes dammini +Ixodes neotomae +Ixodes pacificus +Ixodes scapularis +sheep-tick +Ixodes persulcatus +Ixodes dentatus +Ixodes spinipalpis +wood tick +soft tick +mite +trombiculid +spider mite +house centipede +gallinaceous bird +domestic fowl +jungle fowl +chicken +cock +hen +turkey +grouse +European black grouse +Asian black grouse +blackcock +greyhen +red grouse +moorhen +greater prairie chicken +lesser prairie chicken +heath hen +guan +chachalaca +megapode +mallee fowl +phasianid +pheasant +bobwhite +northern bobwhite +Old World quail +migratory quail +peafowl +California quail +Hungarian partridge +red-legged partridge +Greek partridge +mountain quail +guinea fowl +columbiform bird +pigeon +dove +turtledove +domestic pigeon +homing pigeon +sandgrouse +parrot +cockatoo +lory +varied Lorikeet +rainbow lorikeet +parakeet +cuculiform bird +cuckoo +crow pheasant +coraciiform bird +roller +kingfisher +hoopoe +apodiform bird +swift +Archilochus colubris +thornbill +goatsucker +piciform bird +woodpecker +flicker +sapsucker +toucanet +trogon +quetzal +aquatic bird +waterfowl +anseriform bird +duck +teal +widgeon +sheldrake +goldeneye +scaup +wood duck +sea duck +scoter +merganser +gosling +gander +Chinese goose +greylag +blue goose +snow goose +brant +common brant goose +honker +barnacle goose +swan +tundra swan +screamer +crested screamer +mammal +prototherian +monotreme +marsupial +opossum +bandicoot +kangaroo +common wallaby +hare wallaby +nail-tailed wallaby +rock wallaby +pademelon +tree wallaby +rat kangaroo +phalanger +dasyurid marsupial +dasyure +placental +calf +buck +insectivore +mole +shrew mole +shrew +water shrew +tenrec +invertebrate +sponge +glass sponge +coelenterate +Chrysaora quinquecirrha +hydrozoan +siphonophore +anthozoan +actinia +coral +gorgonian +stony coral +ctenophore +worm +planarian +fluke +liver fluke +Fasciolopsis buski +schistosome +tapeworm +echinococcus +taenia +common roundworm +chicken roundworm +pinworm +eelworm +vinegar eel +trichina +hookworm +filaria +Guinea worm +annelid +oligochaete +polychaete +leech +mollusk +scaphopod +gastropod +abalone +scorpion shell +giant conch +edible snail +garden snail +brown snail +Helix hortensis +seasnail +neritid +limpet +Hermissenda crassicornis +cowrie +bivalve +clam +quahog +cockle +oyster +mussel +marine mussel +freshwater mussel +scallop +shipworm +cephalopod +octopod +decapod +squid +crustacean +malacostracan crustacean +decapod crustacean +crab +swimming crab +spider crab +lobster +true lobster +Old World crayfish +American crayfish +shrimp +prawn +krill +stomatopod +mantis shrimp +woodlouse +pill bug +sow bug +sea louse +amphipod +copepod +barnacle +wading bird +stork +ibis +common spoonbill +roseate spoonbill +heron +egret +night heron +American bittern +European bittern +least bittern +whooping crane +rail +crake +gallinule +purple gallinule +coot +great bustard +plain turkey +button quail +trumpeter +seabird +shorebird +plover +turnstone +sandpiper +yellowlegs +ruff +tattler +woodcock +snipe +greyback +red-breasted snipe +curlew +godwit +stilt +stilt +phalarope +courser +coastal diving bird +larid +gull +tern +jaeger +skua +auk +guillemot +murre +puffin +gaviiform seabird +podicipitiform seabird +grebe +pelecaniform seabird +white pelican +Old world white pelican +gannet +snakebird +sphenisciform seabird +penguin +pelagic bird +wandering albatross +black-footed albatross +petrel +shearwater +storm petrel +aquatic mammal +cetacean +whale +baleen whale +rorqual +toothed whale +beaked whale +dolphin +bottlenose dolphin +porpoise +sea cow +carnivore +pinniped mammal +seal +eared seal +fur seal +fur seal +South American sea lion +California sea lion +Australian sea lion +Steller sea lion +earless seal +walrus +canine +bitch +dog +cur +toy dog +toy spaniel +English toy spaniel +hunting dog +hound +coonhound +dachshund +foxhound +wolfhound +greyhound +terrier +bullterrier +rat terrier +Manchester terrier +fox terrier +wirehair +Welsh terrier +schnauzer +Skye terrier +sporting dog +retriever +pointer +setter +spaniel +springer spaniel +water spaniel +working dog +watchdog +shepherd dog +Belgian sheepdog +pinscher +Sennenhunde +mastiff +bulldog +guide dog +sled dog +liver-spotted dalmatian +spitz +griffon +corgi +poodle +wolf +coydog +wild dog +striped hyena +brown hyena +spotted hyena +aardwolf +fox +black fox +silver fox +blue fox +feline +cat +domestic cat +tom +blue point Siamese +wildcat +common lynx +Canada lynx +bobcat +spotted lynx +caracal +big cat +leopardess +panther +lioness +lionet +Bengal tiger +tigress +saber-toothed tiger +bear +Syrian bear +grizzly +Alaskan brown bear +cinnamon bear +viverrine +civet +Indian mongoose +ichneumon +slender-tailed meerkat +suricate +bat +fruit bat +carnivorous bat +leafnose bat +false vampire +vespertilian bat +long-eared bat +freetail +vampire bat +predator +game +game bird +fossorial mammal +tetrapod +insect +beetle +two-spotted ladybug +Mexican bean beetle +Hippodamia convergens +vedalia +bombardier beetle +calosoma +searcher +firefly +sawyer +pine sawyer +flea beetle +Colorado potato beetle +carpet beetle +clerid beetle +lamellicorn beetle +scarabaeid beetle +scarab +tumblebug +dorbeetle +June beetle +melolonthid beetle +elaterid beetle +snout beetle +boll weevil +blister beetle +bark beetle +darkling beetle +flour beetle +seed beetle +pea weevil +bean weevil +rice weevil +louse +flea +dipterous insect +gall midge +housefly +tsetse fly +blowfly +bluebottle +greenbottle +flesh fly +tachina fly +gadfly +botfly +human botfly +sheep botfly +warble fly +horsefly +bee fly +fruit fly +louse fly +horn fly +mosquito +gnat +fungus gnat +hymenopterous insect +drone +worker +honeybee +Africanized bee +black bee +Carniolan bee +Italian bee +carpenter bee +bumblebee +cuckoo-bumblebee +andrena +Nomia melanderi +leaf-cutting bee +mason bee +potter bee +wasp +vespid +paper wasp +hornet +sphecoid wasp +digger wasp +chalcid fly +sawfly +pharaoh ant +little black ant +army ant +carpenter ant +fire ant +wood ant +slave ant +Formica fusca +slave-making ant +sanguinary ant +bulldog ant +Amazon ant +termite +dry-wood termite +orthopterous insect +short-horned grasshopper +locust +migratory locust +migratory grasshopper +long-horned grasshopper +katydid +mormon cricket +sand cricket +mole cricket +European house cricket +field cricket +tree cricket +snowy tree cricket +phasmid +diapheromera +oriental cockroach +American cockroach +Australian cockroach +German cockroach +giant cockroach +praying mantis +hemipterous insect +leaf bug +mirid bug +lygus bug +lygaeid +coreid bug +heteropterous insect +water bug +water strider +assassin bug +homopterous insect +whitefly +sweet-potato whitefly +coccid insect +scale insect +soft scale +armored scale +mealybug +plant louse +aphid +greenfly +woolly aphid +adelgid +dog-day cicada +seventeen-year locust +spittle insect +plant hopper +psocopterous insect +psocid +booklouse +ephemerid +neuropteron +green lacewing +brown lacewing +odonate +trichopterous insect +caseworm +thysanuran insect +bristletail +thysanopter +thrips +earwig +lepidopterous insect +butterfly +nymphalid +fritillary +emperor butterfly +danaid +pierid +small white +large white +southern cabbage butterfly +blue +copper +American copper +hairstreak +Strymon melinus +moth +tortricid +lymantriid +geometrid +cankerworm +pyralid +tineoid +tineid +clothes moth +gelechiid +grain moth +noctuid moth +cutworm +underwing +hawkmoth +bombycid +saturniid +giant silkworm moth +silkworm +arctiid +lasiocampid +tent caterpillar +webworm +webworm moth +caterpillar +bollworm +woolly bear +larva +grub +pupa +queen +echinoderm +basket star +edible sea urchin +sand dollar +heart urchin +crinoid +trepang +lagomorph +leporid +rabbit +eastern cottontail +swamp rabbit +marsh hare +leveret +European hare +jackrabbit +white-tailed jackrabbit +blacktail jackrabbit +polar hare +snowshoe hare +pika +rodent +mouse +rat +pocket rat +field mouse +brown rat +jerboa rat +water rat +New World mouse +wood mouse +wood rat +vole +packrat +Eurasian hamster +golden hamster +gerbil +lemming +pied lemming +Old World porcupine +brush-tailed porcupine +long-tailed porcupine +New World porcupine +Canada porcupine +pocket mouse +kangaroo rat +jumping mouse +jerboa +dormouse +gopher +squirrel +tree squirrel +ground squirrel +prairie dog +American flying squirrel +groundhog +hoary marmot +yellowbelly marmot +Old World beaver +New World beaver +cavy +naked mole rat +ungulate +hyrax +odd-toed ungulate +equine +horse +foal +colt +male horse +stallion +mare +saddle horse +warhorse +pony +mustang +bronco +wild horse +pony +racehorse +racer +harness horse +workhorse +draft horse +trotting horse +ass +domestic ass +wild ass +onager +common zebra +mountain zebra +grevy's zebra +rhinoceros +tapir +even-toed ungulate +swine +piglet +porker +peccary +ruminant +bovid +bovine +ox +cattle +bull +cow +beef +Brahman +dairy cattle +Old World buffalo +Indian buffalo +carabao +Asian wild ox +American bison +wisent +sheep +lamb +domestic sheep +wild sheep +mountain sheep +goat +domestic goat +wild goat +goat antelope +antelope +Thomson's gazelle +Gazella subgutturosa +springbok +kudu +harnessed antelope +eland +waterbuck +oryx +deer +stag +red deer +mule deer +roe deer +caribou +chevrotain +camel +domestic llama +guanaco +alpaca +giraffe +musteline mammal +ermine +stoat +New World least weasel +Old World least weasel +longtail weasel +American mink +ferret +muishond +snake muishond +striped muishond +river otter +Eurasian otter +striped skunk +hooded skunk +hog-nosed skunk +spotted skunk +American badger +Eurasian badger +ferret badger +hog badger +marten +pachyderm +edentate +peba +apar +tatouay +peludo +giant armadillo +pichiciago +sloth +anteater +primate +ape +anthropoid ape +hominoid +hominid +homo +Homo erectus +Homo sapiens +australopithecine +great ape +western lowland gorilla +eastern lowland gorilla +mountain gorilla +silverback +western chimpanzee +eastern chimpanzee +central chimpanzee +pygmy chimpanzee +lesser ape +monkey +Old World monkey +talapoin +grivet +vervet +green monkey +chacma +mandrill +drill +rhesus +bonnet macaque +Barbary ape +crab-eating macaque +entellus +guereza +New World monkey +true marmoset +pygmy marmoset +tamarin +silky tamarin +pinche +lemur +tarsier +flying lemur +proboscidean +elephant +mammoth +procyonid +raccoon +fish +food fish +young fish +crossopterygian +lungfish +catfish +silurid +bullhead +channel catfish +gadoid +cod +hake +elver +common eel +tuna +moray +conger +teleost fish +clupeid fish +shad +herring +sardine +pilchard +anchovy +salmonid +salmon +Atlantic salmon +trout +brown trout +char +whitefish +smelt +tarpon +ribbonfish +toadfish +needlefish +flying fish +spiny-finned fish +percoid fish +perch +pike-perch +walleye +robalo +pike +pickerel +sunfish +crappie +freshwater bream +black bass +bass +serranid fish +grouper +hind +surfperch +cardinalfish +remora +carangid fish +jack +moonfish +pompano +scad +dolphinfish +characin +cichlid +snapper +grunt +sparid +sea bream +porgy +sciaenid fish +croaker +whiting +sea trout +mullet +goatfish +mullet +silversides +barracuda +sea chub +butterfly fish +damselfish +clown anemone fish +wrasse +blenny +pikeblenny +gunnel +goby +gempylid +scombroid +mackerel +Spanish mackerel +tuna +bonito +sailfish +billfish +marlin +tripletail +mojarra +ganoid +Pacific sturgeon +beluga +scorpaenoid +scorpaenid +scorpionfish +rockfish +lumpfish +greenling +gurnard +sea robin +plectognath +triggerfish +filefish +boxfish +spiny puffer +ocean sunfish +flatfish +righteye flounder +lefteye flounder +whiff +sole +abbey +abbey +abrader +accelerator +accessory +accommodation +acoustic device +acoustic modem +acrylic +action +actuator +adhesive bandage +adjustable wrench +aeolian harp +aerosol +after-shave +airbus +aircraft +airfield +airfoil +air gun +airplane +air pump +air-to-air missile +air-to-ground missile +alarm +alb +alcazar +Allen screw +alms dish +altimeter +Amati +ammeter +ammunition +amplifier +analog computer +analytical balance +anchor +anchor chain +aneroid barometer +angledozer +anklet +antenna +anteroom +antiaircraft +antiballistic missile +apartment +apartment building +aperture +apparatus +apparel +appliance +appliance +applicator +aquarium +arbor +arcade +arch +arc lamp +area +argyle +arm +armament +armature +armchair +armoire +armor +armored vehicle +armor plate +armrest +array +arrow +artificial heart +artillery +assembly +assembly plant +astrodome +astronomical telescope +athletic sock +atom bomb +atomic clock +atomizer +attachment +attack submarine +attire +audiocassette +audio system +audiotape +auditorium +autoclave +autoinjector +autoloader +automat +automat +automatic firearm +automatic rifle +automaton +auxiliary research submarine +awl +ax +axis +axle +axletree +baby bed +baby buggy +baby grand +back +background +backseat +badminton equipment +badminton racket +bag +bag +bag +baggage +bagpipe +bait +balance +balcony +balcony +bale +ball +ball gown +ballistic missile +ballistic pendulum +ball-peen hammer +ballroom +band +bandage +bandanna +banderilla +bar +bar +barbed wire +barge +barge pole +barn door +barograph +barrack +barrage balloon +barrel knot +barrel vault +barrier +barroom +base +base +baseball equipment +basilica +basin +basket +basketball equipment +bass +bass drum +bass horn +bastion +bat +bathhouse +battery +battle-ax +battle dress +battleship +bay rum +bay window +beading plane +beam +beam balance +bearing +beater +beating-reed instrument +bed +bed +bedclothes +bedroom +bedroom furniture +bedspread +bedspring +beehive +beer barrel +bell +bell push +bell tower +belt +belt buckle +bench +berlin +berth +besom +bevel gear +bicycle +bicycle chain +bier +billiard ball +bin +binding +bin liner +binocular microscope +bioscope +birchbark canoe +bird shot +bistro +bit +bit +black tie +blade +blade +blanket +blimp +blind +block +block plane +blouse +blower +blowtorch +bludgeon +boarding +boarding house +boardroom +boat +bobbin +body +body armor +body lotion +boiler +bolt +bolt +bomb +bomber +bongo +boom +boom +boomerang +boot +booth +booth +bore bit +Boston rocker +bota +bottle +bottle opener +bow +bow +bowed stringed instrument +bowl +bowl +bowline +bowling equipment +bowling pin +bowsprit +box +box +boxcar +boxing equipment +brace +brace +bracelet +bracket +brake +brake system +brass +brasserie +brazier +breechcloth +breeches +brewpub +brick +bricklayer's hammer +brickwork +bridal gown +bridge +briefcase +brigandine +brilliant pebble +brim +broad arrow +broadax +broad hatchet +broadsword +brush +bubble jet printer +buffer +buffet +building +building complex +bulldozer +bullet +bullhorn +bullnose +bundle +bunker +burial chamber +burner +bus +business suit +butt joint +button +buttress +butt shaft +buzz bomb +cabaret +caber +cabin +cabin +cabinet +cabinet +cabin liner +cable +cable +cafe +cafeteria +cafeteria tray +caff +cage +calculator +caliper +calorimeter +camera +camera lens +camera tripod +camp +camp +camp chair +camper +can +canal +candelabrum +candlestick +cane +cannikin +cannon +cannon +cannonball +canopy +canteen +canteen +canvas +canvas tent +cap +cap +cap +capacitor +caparison +cape +cap screw +capsule +car +car +carbine +carbon arc lamp +card index +cardioid microphone +car door +cargo liner +cargo ship +carillon +carpenter's hammer +carpenter's level +carpenter's mallet +carpenter's rule +carpet tack +carriage +carriage +carriage bolt +carrick bend +carrier +car seat +cart +cartridge +cartridge belt +cartridge holder +case +case +cashbox +casque +casserole +cassock +catch +catcher's mask +cathedra +cathedral +cathedral +catheter +cathode +cathode-ray tube +cat's-paw +cattle car +cautery +cavalry sword +cedar chest +cell +cell +cellblock +center +centrifuge +ceramic +ceramic ware +chain tongs +chair +chair of state +chalk +chamfer plane +chandlery +chapel +character printer +chassis +chasuble +chatelaine +checker +cheeseboard +chemical reactor +chessman +chest of drawers +child's room +china +chip +chip +chisel +choke +chokey +chordophone +chronoscope +chuck +church key +cigar lighter +circle +circuit +circuit board +circular plane +circular saw +cistern +civilian clothing +clamp +clamshell +clarinet +classroom +clavier +cleaning implement +cleaning pad +clean room +clinic +clip +cloak +clock +closed circuit +closed-circuit television +closet +cloth covering +clothes closet +clothes dryer +clothes hamper +clothes tree +clothing +clothing store +clout nail +clove hitch +clutch +coach +coal car +coal shovel +coat +coat closet +coating +coating +coat of paint +coaxial cable +cocked hat +coffee cup +coffee maker +coffer +coffin +coil +colander +collider +cologne +colonnade +color television +Colt +column +column +comb +comb +combination plane +combine +commissary +commodity +communication system +commutator +compact disk +compartment +compass +compass card +compound lens +compound lever +compressor +computer +computer circuit +computer network +computer screen +computer system +concentration camp +concert grand +concertina +condenser +condenser +condenser microphone +conductor +connecting rod +connection +conservatory +conservatory +contact +container +contrabassoon +control +control panel +control system +convent +converging lens +converter +convertible +conveyance +cooker +cooking utensil +cooler +cooling system +cord +cord +cordage +corner +correctional institution +corset +cosmetic +costume +costume +cotter +cotton +counter +counter +counter +counter tube +country house +coupling +court +court +coverall +covering +cowbarn +craft +cravat +crazy quilt +cream +cream pitcher +crematory +crepe +crib +cricket equipment +croquet equipment +crossbar +crossbow +crosspiece +crown jewels +cruiser +cruiser +cruise ship +crystal microphone +cudgel +cuff +cultivator +cup +cupboard +cupola +curb roof +curtain +cutout +cutter +cutting implement +cybercafe +cyclotron +cylinder +cymbal +dado plane +dagger +damper +dart +data converter +data input device +davenport +davenport +davit +dead axle +deck +deck +deck chair +deep-freeze +defensive structure +delay line +delicatessen +dental appliance +denture +depilatory +depressor +depth finder +derrick +destroyer +detector +detector +detonating fuse +detonator +developer +device +dial +dialyzer +diathermy machine +diesel locomotive +digital camera +digital computer +digital display +diner +dinghy +dining car +dining-hall +dining room +dining-room furniture +dining-room table +dinner dress +dinner pail +dinner table +diode +dip +diplomatic building +dipper +DIP switch +directional antenna +directional microphone +direction finder +disguise +dish +dish +disk +dispenser +display +display panel +distillery +ditch +ditch spade +dive bomber +doll +dolmen +domino +door +doorbell +doorlock +doornail +dormer window +dormitory +dot matrix printer +double-breasted suit +double-reed instrument +douche +dovecote +dovetail plane +downstage +drafting instrument +Dragunov +drawstring bag +dray +dredging bucket +dress +dress blues +dressing +dress uniform +drill +electric drill +drill rig +drinking fountain +drinking vessel +drip mat +drip pot +drive +drive +drogue +drogue parachute +drop-leaf table +dry battery +dry dock +dryer +dry masonry +dry wall +dugout canoe +dumdum +dumpcart +dune buggy +dungeon +duplicator +dustmop +dwelling +earphone +earthenware +easel +easy chair +edge tool +eiderdown +elastic bandage +electrical converter +electrical device +electric bell +electric frying pan +electric furnace +electric heater +electric lamp +electric motor +electric refrigerator +electro-acoustic transducer +electrode +electromagnet +electronic balance +electronic device +electronic equipment +electronic instrument +electronic voltmeter +electron microscope +electrostatic generator +electrostatic printer +elevator +embankment +embellishment +enamel +enamelware +enclosure +endoscope +engine +engine +ensemble +entrenching tool +epidiascope +equipment +eraser +escutcheon +espadrille +espresso shop +establishment +estaminet +exercise device +exhaust fan +exhibition hall +Exocet +expansion bolt +explosive device +external-combustion engine +extractor +fabric +face mask +face veil +facing +factory +fairlead +false face +fan +farm building +farm machine +fastener +fatigues +faucet +feedback circuit +fence +fencing sword +fender +ferry +fetoscope +field-sequential color television +fife +fifth wheel +fighter +figure eight +file +file server +filling +film +film +filter +filter +finery +finisher +fipple flute +fire +firearm +fire iron +fireplace +firkin +fisherman's bend +fisherman's knot +fisherman's lure +fishing boat +fishing rod +fishnet +flag +flageolet +flambeau +flannelette +flap +flashlight +flask +flatcar +flat tip screwdriver +fleet ballistic missile submarine +flight simulator +flip-flop +floating dock +floor +floor +floor cover +fly +flywheel +fob +foghorn +folder +food hamper +footbath +footbridge +foothold +foot rule +footwear +footwear +forceps +fore-and-aft sail +foremast +fore plane +fore-topmast +fork +formalwear +fortification +fortress +foundation garment +foundry +fragmentation bomb +framework +free-reed instrument +freight train +French door +friary +friction clutch +frigate +frill +frock coat +front projector +fruit machine +full-dress uniform +full metal jacket +funny wagon +fur hat +furnace +furnishing +furniture +fuse +gable +gable roof +gaff +galleon +gallery +galley +galley +gallows +galvanometer +gambling house +game +game equipment +gamp +garage +Garand rifle +garden +garden spade +garden tool +garment +gas burner +gas-discharge tube +gasket +gasoline engine +gate +gatehouse +gatepost +gathered skirt +gauge +gauze +gauze +gavel +gear +gear +gear +gearing +general-purpose bomb +generator +generator +Geneva gown +geodesic dome +girder +glass +glider +glove +glyptic art +goal +golf club +golf equipment +Gordian knot +Gothic arch +government building +government office +gown +gramophone +granary +granny knot +grapnel +grapnel +grate +graver +greasy spoon +greatcoat +great hall +greengrocery +grenade +grillroom +groined vault +Guarnerius +guidance system +guided missile +guildhall +guitar +guitar pick +gun +gun carriage +gunlock +gunsight +gun trigger +gurney +gymnastic apparatus +gym shoe +gypsy cab +habergeon +habit +hairdressing +hairpiece +hairpin +half hatchet +half hitch +hall +hall +hammer +hand +handbell +handbow +handcart +hand glass +handloom +hand lotion +hand mower +handsaw +hand shovel +hand tool +handwear +handwheel +hanger +hank +harpsichord +harrow +hash house +hat +hatch +hauberk +hawser bend +hazard +head +head +head covering +headdress +header +headgear +headlight +headsail +headscarf +health spa +heat engine +heater +heat lamp +heat-seeking missile +heavier-than-air craft +heckelphone +hedge +helicopter +helm +helmet +helmet +heraldry +high altar +high-angle gun +high gear +high table +hinge +hip boot +hitch +hoe +hogshead +hoist +holder +holding device +home appliance +homespun +hood +hood +hood +hook +Hoover +hope chest +horn +horn button +horse +horsecar +horse-drawn vehicle +horsehair wig +hosiery +hospital +hospital room +hostel +hot-air balloon +hotel +hotel room +hot tub +house +house +housing +hovel +huarache +humeral veil +hut +hutch +hydraulic brake +hydraulic system +hydroelectric turbine +hydrofoil +hydrometer +hygrometer +hypermarket +hypodermic syringe +ice machine +ice rink +ice skate +icetray +ignition switch +impact printer +implant +implement +imprint +improvised explosive device +inclined plane +indicator +induction coil +ink-jet printer +inkstand +institution +instrument +instrument of punishment +instrument of torture +interceptor +interchange +intercommunication system +intercontinental ballistic missile +interface +interior door +internal-combustion engine +ionization chamber +video iPod +iron +jack +jack +jacket +jacket +jack plane +jail +jamb +jar +jeroboam +jet +jet engine +jewelled headdress +jib +jibboom +jiggermast +joint +jointer +joist +jolly boat +jug +jumper +jumper cable +junction +junction +jury mast +kayak +keel +keg +kerchief +kettle +key +key +keyboard +keyboard instrument +khakis +kiln +kinescope +kingbolt +kirk +kit +kit +kitbag +kitchen +kitchen appliance +kitchen utensil +kite balloon +knee-high +knife +knife +knit +knob +lace +lacquer +ladder truck +lag screw +lamasery +laminate +lamination +lamp +lamp +landing gear +land mine +lantern +lapel +lathe +lattice +launcher +lead-acid battery +leather strip +Leclanche cell +leg +legging +lens +lens implant +level +lever +Levi's +lid +life buoy +life jacket +life preserver +lifting device +ligament +light +light-emitting diode +lighter-than-air craft +lighting +light microscope +linear accelerator +line printer +lingerie +lining +liquid crystal display +lister +living quarters +living room +local area network +lock +locomotive +lodge +lodging house +loft +loft +longbow +lookout +loom +loop knot +lota +lounge +loungewear +love knot +lunchroom +luxury liner +lyre +machine +machine +machine bolt +machine gun +machinery +machine screw +machine tool +magic lantern +magnet +magnetic disk +magnetic recorder +magnetic tape +magnifier +magnum +magnus hitch +mailer +mainframe +mainmast +main-topmast +main yard +makeup +mallet +mallet +mallet +mandolin +manger +man-of-war +manometer +MANPAD +mansard +mansion +marina +marker +marketplace +maser +mask +masonry +mass spectrometer +mast +mast +mat +mat +match +match +match plane +material +materiel +Matthew Walker +maul +measure +measuring instrument +measuring stick +mechanical device +mechanical system +mechanism +medical building +medical instrument +memorial +memory +memory chip +memory device +menhir +man's clothing +mercantile establishment +mercury barometer +mercury thermometer +mercury-vapor lamp +mess +metal screw +meteorological balloon +meter +meterstick +microbalance +microfilm +microscope +military hospital +military quarters +military vehicle +mill +milldam +millinery +mine +minibike +mink +minster +Minuteman +mirror +mixer +mizzenmast +module +mold +moldboard plow +monitor +monitor +morgue +mortise joint +motion-picture camera +motion-picture film +motor +motorboat +motorcycle +motor hotel +motor vehicle +mound +mount +mouse button +movie projector +moving-coil galvanometer +mug +multiplex +multiplexer +musette pipe +mushroom anchor +musical instrument +musket +musket ball +muslin +muzzle loader +narrowbody aircraft +nautilus +navigational system +naval equipment +naval gun +naval radar +naval weaponry +navigational instrument +nebuchadnezzar +neckline +neckpiece +necktie +neckwear +needle +needlework +negligee +net +net +net +net +network +network +night bell +nightwear +noisemaker +nonsmoker +non-volatile storage +nose flute +nuclear reactor +nuclear weapon +nursery +oar +oblique bandage +oboe da caccia +oboe d'amore +obstacle +office +office furniture +oil lamp +oil paint +oil tanker +olive drab +omnidirectional antenna +onion dome +open-air market +open-end wrench +opener +openside plane +ophthalmoscope +optical device +optical disk +optical instrument +optical telescope +organ pipe +outbuilding +outerwear +outfit +outrigger canoe +outside mirror +oven +overgarment +overhand knot +overhang +overhead projector +overnighter +overshoe +oxford +package +packaging +packing box +paddle +paddle steamer +page printer +paint +pallium +pan +pan +panic button +panopticon +panopticon +pantechnicon +pantry +pants suit +panzer +paper chain +paper fastener +parabolic reflector +parapet +parasail +parka +parsonage +particle detector +partition +passenger ship +passenger train +passenger van +passive matrix display +passkey +patch +patchouli +patchwork +patina +patisserie +pavis +peavey +pedal +pedestal table +pedestrian crossing +pedicab +peg +pen +penal institution +pencil +pendulum +pendulum clock +percolator +percussion instrument +perfumery +peripheral +periwig +personal computer +petticoat +Phillips screw +Phillips screwdriver +phonograph record +photographic equipment +photographic paper +photometer +physical pendulum +piano +piccolo +pick +pick +pickle barrel +piece of cloth +pile +pillow lace +pilothouse +pin +pincer +pinstripe +pipe +pipet +pipe wrench +pistol +pivot +place of business +place of worship +planetarium +planner +plant +planter +plasterboard +plastic laminate +plastic wrap +plastron +plate +platform +platform +platform rocker +plating +pleat +plethysmograph +plexor +pliers +plug +plug +pneumatic drill +pocket +pocket-handkerchief +pocketknife +pointed arch +polyester +polygraph +pomade +pontifical +pool ball +poorhouse +porcelain +porch +portable computer +portico +post +posthole digger +pot +potential divider +potpourri +pottery +pouch +poultice +powder +powder keg +power brake +power mower +power saw +power shovel +power tool +press +press +pressure dome +pressure gauge +pressure suit +printed circuit +printer +prison camp +prod +prolonge knot +prompter +prong +propeller +propeller plane +prosthesis +protective covering +protective garment +pruning saw +pruning shears +public house +public toilet +public transport +pull +pull chain +pulley +Pullman +pullover +pulse counter +pump +pump +pump house +punch +punch press +purifier +push broom +push button +pusher +puzzle +pyrometer +pyx +QWERTY keyboard +racing boat +rack +rack +radar +radiogram +radio interferometer +radio link +radiometer +radio receiver +radiotelegraph +radiotelephone +radio transmitter +raft +rail +rail fence +railing +raincoat +rake +ramp +rampart +random-access memory +rayon +razor +reaction-propulsion engine +reactor +reading lamp +reading room +read-only memory +rearview mirror +receiver +receptacle +reception room +recess +reconnaissance plane +recorder +recording +record player +recreation room +recycling bin +reed stop +reef knot +refectory table +refinery +reflecting telescope +reflector +reformatory +refracting telescope +refrigerator car +refuge +regalia +regimentals +regulator +rein +religious residence +removable disk +repair shop +repeating firearm +reproducer +rescue equipment +reservoir +reset button +residence +resistor +resonator +respirator +restraint +retort +rheostat +rib +ribbed vault +riddle +ride +riding boot +riding mower +rifle ball +rig +rink +river boat +road +roadway +robe +rocket +rocket +rod +roller +roller +in-line skate +roller blind +roller coaster +rolling hitch +Rolodex +Roman building +roof +roof +room +roost +rope +rose water +rotary engine +rotating mechanism +rotating shaft +rotisserie +rotor +round arch +router plane +row house +royal mast +rubber bullet +rug +rushlight +sable +sable coat +sack +sackbut +sacking +saddle +safe +safety belt +safety curtain +safety fuse +safety match +sail +sailboat +sailing vessel +salver +sandglass +sash +satellite +satellite television +saucepan +savings bank +saw +sawhorse +scale +scarf +school +scientific instrument +scissors +scoop +scratcher +screen +screen +screen +screw eye +scrub plane +scuffer +sculpture +sea boat +sea chest +seam +seaplane +seat +seat +second hand +secretary +security system +seeker +selector +self-propelled vehicle +semiautomatic firearm +semiautomatic pistol +semiconductor device +serger +serpent +serving cart +serving dish +set +setscrew +setscrew +sewing needle +sextant +shackle +shade +shaft +shag rug +shaker +shaper +shaping tool +sharpener +shaving cream +shaving foam +shawl +shawm +shears +sheath +shed +sheepshank +sheet bend +shelf +shell +shell +shell +shellac +shelter +shelter +shelter +shield +ship +shipboard system +shirt +shirtfront +shock absorber +shoe +shooting brake +shop +short pants +shotgun +shoulder holster +shrine +shutter +shuttle +sidewinder +sieve +sifter +sights +signaling device +signboard +silk +simulator +single bed +single-breasted suit +single-reed instrument +sitz bath +six-pack +skate +skein +skeleton +skewer +skidder +skid lid +skiff +ski pole +skirt +ski tow +skullcap +slack suit +slat +sled +sleeper +sleeping car +sleeve +sleeve +slide projector +slipknot +slipper +sloop +slop pail +slot machine +small boat +smart bomb +smoker +smooth plane +snack bar +snap-brim hat +snare drum +sniper rifle +Sno-cat +soapbox +socle +sofa +sonograph +sorter +sound recording +soup ladle +source of illumination +soutane +spacecraft +spade +spar +spatula +spear +spear +spectacles +spectrograph +spectroscope +speedometer +spider +spike +spike +spinet +spinning machine +spiral ratchet screwdriver +spiral spring +spit +spokeshave +sponge mop +spoon +sports equipment +sports implement +sportswear +spot +spring +spring balance +springboard +sprit +square +square knot +squash racket +squawk box +squeezer +squinch +stabilizer +stabilizer +stable gear +stadium +stall +stamp mill +stand +standard cell +staple +starter +state prison +station +statue +stay +steakhouse +stealth aircraft +stealth bomber +stealth fighter +steam bath +steamboat +steamer +steam iron +steam whistle +steel mill +steelyard +steeple +steering system +step +step-up transformer +stereo +stick +stick +still +stilt +Stinger +stock +stockcar +stock car +stocking +stonework +stool +stopper knot +storage battery +storage space +storeroom +stove +stove bolt +Stradavarius +straight chair +strap +strap +stringed instrument +strip +strongbox +stronghold +strongroom +structural member +structure +stylus +submachine gun +submersible +submersible +subwoofer +suction pump +suede cloth +sunbonnet +sunhat +supermarket +superstructure +supply chamber +support +support +support column +supporting structure +supporting tower +surface lift +surface-to-air missile +surgeon's knot +surgical instrument +surgical knife +surplice +surveillance system +surveying instrument +surveyor's level +swamp buggy +sweater +swimsuit +sword +synchrotron +system +tabi +table +table +table knife +tableware +tabor +tachometer +tack +tack hammer +talaria +tambour +tambourine +tampon +tank +tank car +tannoy +tape +tape deck +tape recorder +target +tavern +tea chest +teaching aid +tea gown +teashop +teaspoon +tea-strainer +tea tray +telecommunication system +telephone +telephone line +telephone receiver +telephone system +telephone wire +telescope +television antenna +television camera +television equipment +television monitor +temple +temple +tender +tennis racket +tenor drum +tenoroon +tenpenny nail +tent +tenterhook +terminal +terminal +test rocket +tetraskelion +textile machine +textile mill +theater +theodolite +thermometer +thermostat +three-piece suit +three-way switch +thumbscrew +thumbtack +tights +tile +timber +timber hitch +timbrel +time-fuse +timepiece +timer +time-switch +tire chain +tithe barn +toecap +toga +toggle switch +toilet +toilet powder +toiletry +toilet water +token +tomograph +toner +tongs +tool +toolbox +tooth +toothbrush +top +top +topgallant +topmast +topsail +torpedo +torpedo boat +touch screen +towel +toweling +tower +toy box +track +tracked vehicle +trailer +trailer +train +trammel +transdermal patch +transformer +transistor +transmission +transmitter +transporter +trap +trapeze +travel iron +treasure chest +trellis +trench +trial balloon +triclinium +troop carrier +trough +trouser +trowel +truck +trunk +try square +tube +tuck shop +tun +tunic +turbine +Turkish towel +Turk's head +turner +turntable +turtleneck +tweed +tweeter +twenty-two +two-piece +typesetting machine +typewriter +ultraviolet lamp +undercarriage +undergarment +underpants +underwear +uneven parallel bars +uniform +university +uplift +urn +urn +utensil +vacuum flask +valve +van +van +varnish +vehicle +veranda +vertical file +vessel +vessel +vest +vibrator +vibrator +videocassette +video recording +vigil light +viol +vise +vivarium +voltaic cell +voltmeter +wagon +waist pack +walking stick +wall +wall +wall unit +ward +warehouse +warship +wash +washer +washtub +watch +watchtower +water-base paint +water butt +water cart +watercolor +water-cooled reactor +water gauge +water ski +waterwheel +weapon +weaponry +weatherglass +weathervane +web +wedge +wedge +weighbridge +weight +weir +weld +well +whaler +wheel +wheelchair +wheeled vehicle +wheelwork +whetstone +whip +whisk +whispering gallery +white goods +whorehouse +wicker basket +widebody aircraft +winch +Winchester +wind instrument +window +window +window blind +window envelope +Windsor knot +wine bucket +wine cask +wineglass +wire +wire +wire matrix printer +wiring +woman's clothing +wood +woodenware +woodscrew +woodwind +woofer +workbasket +workbench +work-clothing +worktable +workwear +wrapping +wrench +writing desk +writing implement +X-ray film +X-ray machine +yacht chair +yard +yard +yardstick +yoke +zither +zoot suit +grain +light +colorlessness +chromatic color +black +gray +dark red +orange +yellow +green +blue +purple +reddish purple +pink +light brown +reddish brown +complexion +skin +epidermal cell +columnar cell +macule +specimen +milk +embryonic cell +leukocyte +neutrophil +astrocyte +exoskeleton +medium +film +press +print media +storage medium +journalism +photojournalism +newspaper +telecommunication +telephone +call +long distance +wireless +broadcasting +television +reception +chat room +portal site +wordbook +album +concept album +magazine +movie +sign +comestible +course +dainty +dish +fare +diet +dietary supplement +liquid diet +reducing diet +vegetarianism +ration +field ration +foodstuff +starches +concentrate +meal +roughage +flour +wheat flour +nutriment +commissariat +canned food +canned meat +meal +breakfast +lunch +dinner +supper +buffet +picnic +cookout +bite +entree +side dish +casserole +chicken casserole +appetizer +cocktail +hors d'oeuvre +relish +dip +soup +madrilene +broth +broth +chowder +clam chowder +stew +goulash +fish stew +fricassee +ragout +ready-mix +powdered sugar +granulated sugar +brown sugar +sweet +confiture +candy +hard candy +patty +brittle +chewing gum +candied fruit +candied citrus peel +fudge +gumdrop +mint +kiss +lozenge +taffy +dessert +dumpling +frozen dessert +mousse +mousse +whip +pudding +pudding +tipsy cake +ice +chocolate ice cream +Neapolitan ice cream +peach ice cream +strawberry ice cream +tutti-frutti +vanilla ice cream +split +pudding +custard +pastry +turnover +puff paste +phyllo +fish cake +conserve +jam +jelly +apple jelly +marmalade +gelatin +gelatin dessert +patty +stuffing +bread +breadstick +bun +cracker +dark bread +flatbread +loaf of bread +quick bread +rye bread +toast +white bread +French bread +cornbread +johnnycake +muffin +scone +onion roll +sweet roll +onion bagel +biscuit +baking-powder biscuit +soft pretzel +sandwich +hamburger +gruel +edible fruit +vegetable +crudites +legume +greens +solanaceous vegetable +root vegetable +potato +baked potato +sweet potato +snack food +corn chip +tortilla chip +cruciferous vegetable +cabbage +kale +red cabbage +savoy cabbage +squash +summer squash +yellow squash +winter squash +turban squash +gherkin +sprout +beet +pepper +sweet pepper +hot pepper +chili +jalapeno +onion +Spanish onion +salad green +lettuce +butterhead lettuce +bean +pea +green pea +common bean +fresh bean +green bean +shell bean +lima bean +soy +celery +chicory +coffee substitute +chicory escarole +corn +hominy +cress +tomato +cherry tomato +salsify +turnip +edible nut +apple +eating apple +Delicious +McIntosh +Pippin +cooking apple +berry +currant +citrus +temple orange +mandarin +bitter orange +sweet orange +Jaffa orange +navel orange +Valencia orange +lime +almond +plum +dried fruit +raisin +passion fruit +cocoa +melon +muskmelon +winter melon +cherry +sweet cherry +heart cherry +sour cherry +grape +fox grape +muscadine +slipskin grape +vinifera grape +Tokay +cherimoya +soursop +sweetsop +ilama +pond apple +olive +pear +edible seed +walnut +feed +fodder +oil cake +timothy +grain +barley +wheat +rice +mash +bird feed +petfood +salad +tossed salad +combination salad +pasta salad +fruit salad +ingredient +flavorer +condiment +herb +spice +cinnamon +pepper +garlic +mustard +sage +savory +curry +paprika +pickle +sweet pickle +vinegar +sauce +hot sauce +dressing +mayonnaise +cheese sauce +hot-fudge sauce +white sauce +spaghetti sauce +boiled egg +hard-boiled egg +Easter egg +omelet +firm omelet +souffle +dairy product +milk +milk +powdered milk +cream +butter +clarified butter +yogurt +curd +cheese +cream cheese +bleu +cheddar +Swiss cheese +spread +pate +sweetening +sugar +syrup +batter +bread dough +chicken and rice +pasta +Tetrazzini +chili dog +fondue +fondue +hash +kabob +seafood Newburg +meatball +pilaf +sausage pizza +pepperoni pizza +cheese pizza +anchovy pizza +Sicilian pizza +porridge +fish loaf +salmon loaf +scallopine +taco +beef burrito +quesadilla +tostada +beverage +concoction +mix +filling +potion +elixir +alcohol +brew +beer +lager +Weissbier +malt +ale +stout +mead +wine +white wine +sparkling wine +Burgundy +Beaujolais +Medoc +Pinot noir +Bordeaux +claret +Chianti +Cabernet +Merlot +dessert wine +Rhine wine +Rioja +Saint Emilion +zinfandel +table wine +vermouth +fortified wine +Madeira +liquor +brandy +gin +rum +whiskey +corn whiskey +Irish +Scotch +liqueur +coffee liqueur +orange liqueur +mixed drink +cocktail +highball +Bloody Mary +daiquiri +manhattan +martini +sling +sour +caffe latte +cider +sweet cider +juice +fruit juice +grape juice +orange juice +fruit drink +mulled wine +soft drink +cola +coffee +punch +champagne cup +claret cup +rickey +tea +tea +herb tea +tisane +black tea +green tea +water +drinking water +mineral water +vitamin pill +collection +suburb +residence +littoral +grassland +pasture +resort +field +air bubble +arroyo +ascent +atoll +bank +bank +bar +barrier reef +basin +beach +burrow +canyon +cave +continental glacier +crag +crater +dale +descent +draw +dune +geological formation +glacier +glen +gorge +gulch +gully +highland +hill +hillside +hole +hollow +iceberg +ice mass +ion +knoll +landfall +landfill +lather +ledge +lowland +meteorite +mountain +mull +natural depression +natural elevation +nullah +ocean floor +outcrop +plain +point +precipice +ravine +reef +ridge +ridge +rift valley +rock +sandbank +seaside +shiner +shore +slope +soapsuds +spume +tableland +tideland +volcanic crater +wadi +spiritual leader +adventurer +anomaly +benefactor +commoner +contestant +discussant +entertainer +female +finisher +inhabitant +native +juvenile +lover +male +mediator +national +peer +recipient +sensualist +traveler +unwelcome person +unskilled person +worker +wrongdoer +Black +White +Semite +white man +Mongol +Nahuatl +Caddo +Penutian +Teton +Taracahitian +Slav +Catholic +Altaic +Bornean +Canadian +Central American +Britisher +English person +Englishwoman +Ethiopian +Parisian +Greek +Italian +Japanese +Mexican +Nigerian +North American +Pakistani +South American Indian +Filipino +Polynesian +Scandinavian +South African +South American +Turki +American +New Yorker +abbess +abstainer +academic administrator +accomplice +acquaintance +acquirer +aerialist +actor +actor +addict +adjutant +admirer +adulterer +advertiser +advocate +analyst +ancestor +announcer +announcer +appointee +appreciator +appropriator +archbishop +architect +army engineer +army officer +arrival +articulator +asserter +assistant +associate +astronaut +athlete +attendant +aunt +authoritarian +authority +aviator +back +bad person +ballet dancer +bullfighter +baron +bartender +baseball coach +base runner +basketball player +believer +betrothed +bigot +big shot +biochemist +bisexual +boatman +bond servant +botanist +Boy Scout +buddy +campaigner +captain +card player +careerist +caretaker +cavalryman +celebrity +charmer +child +child +cipher +citizen +civil rights leader +cleaner +clergyman +cleric +clerk +climber +closer +clown +coach +cobbler +collaborator +college student +collegian +commanding officer +commissioned officer +commissioned military officer +commissioner +committee member +communist +compulsive +computer scientist +computer user +contractor +convict +copycat +counselor +craftsman +creditor +critic +curate +dancer +dancer +darling +date +daughter +dawdler +deacon +deaf person +debtor +deliveryman +descender +designated hitter +detective +detractor +director +disbeliever +dispatcher +distributor +doctor +domestic partner +draftsman +drinker +drinker +drug addict +drug user +drummer +drunkard +eager beaver +earner +eavesdropper +economist +editor +egotist +elder +elected official +emissary +employee +employer +endomorph +enemy +entrant +examiner +exhibitionist +fan +fancier +farmer +farmhand +fascist +father +female aristocrat +female offspring +female child +fielder +fireman +first baseman +first sergeant +flag officer +flatterer +foe +folk dancer +follower +football player +forefather +forger +founder +free agent +friar +monk +gambler +generator +geneticist +genitor +geologist +girl +godchild +godparent +golfer +grandma +grandmaster +grandparent +granter +great grandchild +great grandparent +grouch +guard +guest +guide +gymnast +Gypsy +hack +hairdresser +hater +headmaster +hearer +hedonist +heir +herder +homeless +horseman +host +host +hypocrite +important person +incumbent +infielder +informer +in-law +insurgent +investigator +investor +journalist +judge +juror +Counsel to the Crown +kinswoman +laborer +lama +landowner +lawgiver +lawman +lawyer +liberator +lieutenant +lineman +literate +litigant +Lord +failure +lowerclassman +lumberman +maid +maker +malcontent +martinet +master of ceremonies +masturbator +medical officer +medical practitioner +medical scientist +mender +meteorologist +middle-aged man +miler +military attache +military officer +military policeman +minister +minor leaguer +misfit +mixed-blood +model +moneymaker +mother +mourner +mover +musician +Muslimah +mystic +nanny +neonate +nephew +neutral +newcomer +newcomer +newspaper editor +niece +noncommissioned officer +nurse +observer +occultist +oldster +old woman +opportunist +orator +originator +outfielder +right fielder +right-handed pitcher +painter +panelist +pardoner +parodist +party +passenger +patient +patron +payer +peddler +percussionist +personal representative +personification +pervert +petitioner +Pharaoh +phonetician +physical therapist +physicist +pimp +pisser +pitcher +planner +player +poet +politician +practitioner +prayer +preserver +president +priest +princess +principal +proctor +programmer +promiser +propagandist +prosecutor +psychic +pusher +queen +queen +ranch hand +reader +recruit +recruiter +religious leader +repairman +reporter +representative +reprobate +rescuer +reservist +restrainer +retailer +retiree +revolutionist +rich person +civil authority +runner +running back +rustic +saboteur +sailor +salesman +salesperson +scalper +schemer +scholar +schoolchild +scientist +second baseman +secretary +seeker +selfish person +seller +serf +serviceman +settler +shrew +sibling +sick person +singer +sister +skeptic +skier +sleeper +slob +smith +snoop +social climber +socialist +social scientist +sociologist +soldier +son +songster +sorcerer +sovereign +speaker +specialist +spectator +stand-in +star +stepparent +stock trader +stranger +strategist +student +subordinate +suitor +superior +surgeon +sweetheart +sympathizer +tax assessor +taxonomist +teacher +television reporter +tenant +tenant +tennis player +testator +testee +theologian +therapist +thinker +thrower +toastmaster +trader +traffic cop +trainer +traitor +traveling salesman +tyrant +upstart +upstart +utility man +vacationer +vegetarian +vice president +victim +volunteer +votary +waiter +waitress +wanderer +wanton +washer +white supremacist +wife +winner +winner +woman +workman +worshiper +wright +writer +wilding +bryophyte +liverwort +pteridophyte +fern +fern ally +spore +spermatophyte +perennial +gymnosperm +ephedra +cycad +sago palm +zamia +pine +pinon +nut pine +white pine +yellow pine +larch +fir +silver fir +cedar +spruce +hemlock +douglas fir +cedar +cypress +arborvitae +araucaria +kauri pine +celery pine +yellowwood +gymnospermous yellowwood +yew +angiosperm +dicot +flower +wildflower +inflorescence +pistil +pericarp +oilseed +custard apple +barberry +allspice +laurel +anise tree +magnolia +moonseed +buttercup +aconite +baneberry +anemone +thimbleweed +columbine +clematis +delphinium +nigella +wax myrtle +zebrawood +legume +legume +darling pea +clover +acacia +wattle +albizzia +nitta tree +dogbane +allamanda +carissa +frangipani +rauwolfia +arum +alocasia +anthurium +caladium +monstera +nephthytis +arrow arum +calla lily +duckweed +watermeal +birthwort +sandwort +mouse-ear chickweed +pink +china pink +lychnis +silene +chickweed +fig marigold +amaranth +orach +saltbush +beet +sand verbena +four o'clock +echinocactus +prickly pear +pokeweed +portulaca +flame flower +caper +spiderflower +crucifer +cress +watercress +rock cress +cabbage +head cabbage +turnip plant +mustard +wallflower +woad +stock +radish plant +pennycress +poppy +prickly poppy +composite +compass plant +everlasting +achillea +ageratum +ragweed +ammobium +burdock +artemisia +mugwort +aster +wood aster +common daisy +bur marigold +calendula +thistle +carline thistle +catananche +centaury +knapweed +chrysanthemum +golden aster +goldenbush +plume thistle +woolly thistle +coreopsis +fleabane +woolly sunflower +cotton rose +gazania +African daisy +cudweed +gumweed +goldenbush +sneezeweed +sunflower +hawkweed +marsh elder +krigia +hawkbit +blazing star +rattlesnake root +daisybush +coneflower +coneflower +cutleaved coneflower +golden thistle +white-topped aster +goldenrod +sow thistle +marigold +dandelion +crownbeard +zinnia +achene +campanula +orchid +orchis +arethusa +helleborine +coral root +lady's slipper +large yellow lady's slipper +helleborine +fringed orchis +rein orchid +spider orchid +moth orchid +butterfly orchid +ladies' tresses +vanda +vanilla +yam +primrose +pimpernel +featherfoil +loosestrife +water pimpernel +gramineous plant +grass +wheatgrass +foxtail +broom grass +oat +brome +grama +reed grass +burgrass +crabgrass +lyme grass +wild rye +plume grass +rye grass +ricegrass +meadowgrass +millet +reed +sorghum +grain sorghum +cordgrass +cereal +wheat +corn +mealie +zoysia +bamboo +cotton grass +spike rush +pandanus +cattail +grain +kernel +gourd +gourd +squash +summer squash +marrow +winter squash +turban squash +bryony +sweet melon +luffa +lobelia +mallow +hollyhock +althea +poppy mallow +seashore mallow +globe mallow +tulipwood tree +sterculia +bottle-tree +screw tree +cacao +linden +herb +protea +banksia +grevillea +macadamia +casuarina +beefwood +heath +bearberry +huckleberry +kalmia +rhododendron +cranberry +blueberry +shortia +Australian heath +epacris +wintergreen +pipsissewa +beech +chestnut +tanbark oak +southern beech +New Zealand beech +oak +live oak +white oak +red oak +scrub oak +chestnut oak +birch +alder +hornbeam +hop hornbeam +hazelnut +centaury +gentian +fringed gentian +olive tree +fringe tree +ash +red ash +jasmine +privet +lilac +liquidambar +walnut +hickory +wing nut +loosestrife +myrtle +gum tree +eucalyptus +flooded gum +mallee +stringybark +tupelo +enchanter's nightshade +willowherb +fuchsia +evening primrose +daphne +canna +banana +ginger +begonia +tuberous begonia +poon +St John's wort +rockrose +dipterocarp +candlewood +reseda +viola +violet +nettle +cannabis +mulberry +fig tree +fig +elm +hackberry +iridaceous plant +bearded iris +beardless iris +crocus +amaryllis +blood lily +narcissus +daffodil +liliaceous plant +colicroot +alliaceous plant +kniphofia +poker plant +asphodel +mariposa +globe lily +camas +dogtooth violet +fritillary +tulip +star-of-Bethlehem +grape hyacinth +scilla +false asphodel +bog asphodel +hellebore +death camas +sarsaparilla +Solomon's-seal +bellwort +agave +sansevieria +cassia +locust tree +senna +angelim +milk vetch +wild indigo +pea tree +glory pea +rosewood +blackwood +tick trefoil +coral tree +vetchling +wild pea +lupine +medic +mucuna +locoweed +pole bean +pea +edible-pod pea +quira +hoary pea +bush pea +vetch +palm +sago palm +feather palm +fan palm +palmetto +areca +calamus +oil palm +raffia palm +lady palm +eriogonum +rhubarb +water plantain +waterweed +pondweed +rose +agrimonia +flowering quince +cotoneaster +avens +apple tree +wild apple +crab apple +Iowa crab +cinquefoil +plum +wild plum +bullace +apricot +cherry +wild cherry +sweet cherry +sour cherry +almond tree +almond +bird cherry +flowering cherry +chokecherry +fruit tree +bramble bush +raspberry +mountain ash +service tree +spirea +madderwort +coffee +cinchona +bedstraw +genipa +hamelia +honeysuckle +American fly honeysuckle +teasel +scabious +geranium +cranesbill +storksbill +incense tree +mahogany +silver ash +milkwort +citrus +orange +mandarin +lemon +kumquat +prickly ash +bitterwood tree +ailanthus +nasturtium +willow +osier +sallow +poplar +black poplar +cottonwood +aspen +soapberry +soapberry vine +harpullia +pachysandra +spindle tree +maple +box elder +holly +sumac +horse chestnut +persimmon +buckthorn +styrax +carnivorous plant +pitcher plant +sedum +philadelphus +saxifrage +astilbe +alumroot +miterwort +parnassia +currant +plane tree +phlox +acanthus +catalpa +anchusa +comfrey +convolvulus +bindweed +gloxinia +streptocarpus +waterleaf +nemophila +scorpionweed +giant hyssop +bugle +wood mint +calamint +coleus +dead nettle +origanum +horehound +monarda +savory +germander +thyme +blue curls +snapdragon +kitten-tails +Indian paintbrush +foxglove +toadflax +veronica +nightshade +thorn apple +matrimony vine +cupflower +petunia +salpiglossis +spurge +croton +cassava +slipper spurge +camellia +umbellifer +angelica +astrantia +caraway +fennel +parsnip +parsley +sanicle +dogwood +valerian +bristle fern +flowering fern +climbing fern +clover fern +adder's tongue +grape fern +ergot +sclerotinia +earthball +Podaxaceae +false truffle +rhizopus +slime mold +cellular slime mold +downy mildew +pythium +Sarcosomataceae +club fungus +lichen +lecanora +fungus +basidiomycete +mushroom +mushroom +mushroom +toadstool +horse mushroom +meadow mushroom +royal agaric +false deathcap +fly agaric +death cap +blushing mushroom +destroying angel +chanterelle +floccose chanterelle +pig's ears +cinnabar chanterelle +jack-o-lantern fungus +inky cap +shaggymane +milkcap +fairy-ring mushroom +oyster mushroom +olive-tree agaric +Pholiota astragalina +Pholiota aurea +Pholiota destruens +Pholiota flammans +Pholiota flavida +nameko +Pholiota squarrosa-adiposa +Pholiota squarrosa +Pholiota squarrosoides +Stropharia ambigua +Stropharia hornemannii +Stropharia rugoso-annulata +Entoloma lividum +Entoloma aprile +Chlorophyllum molybdites +lepiota +parasol mushroom +poisonous parasol +Lepiota naucina +Lepiota rhacodes +American parasol +Lepiota rubrotincta +Lepiota clypeolaria +onion stem +blewits +sandy mushroom +Tricholoma pessundatum +Tricholoma sejunctum +man-on-a-horse +Tricholoma venenata +Tricholoma pardinum +Tricholoma vaccinum +Tricholoma aurantium +Pluteus aurantiorugosus +Pluteus magnus +deer mushroom +straw mushroom +Volvariella bombycina +Clitocybe clavipes +Clitocybe dealbata +Clitocybe inornata +Clitocybe robusta +Clitocybe irina +Clitocybe subconnexa +winter mushroom +mycelium +ascomycete +Clavicipitaceae +yeast +discomycete +morel +Verpa +false morel +lorchel +helvella +Gyromitra californica +Gyromitra sphaerospora +Gyromitra esculenta +Gyromitra infula +Gyromitra gigas +gasteromycete +common stinkhorn +Phallus ravenelii +dog stinkhorn +stinky squid +puffball +Geastrum coronatum +Astreus pteridis +Astreus hygrometricus +polypore +Boletus chrysenteron +Boletus edulis +Frost's bolete +Boletus luridus +Boletus mirabilis +Boletus pallidus +Boletus pulcherrimus +Boletus pulverulentus +Boletus roxanae +Boletus subvelutipes +Boletus variipes +Boletus zelleri +Fuscoboletinus paluster +Fuscoboletinus serotinus +Leccinum fibrillosum +Suillus albivelatus +old-man-of-the-woods +Boletellus russellii +jelly fungus +rust +smut +cornsmut +flag smut fungus +waxycap +Hygrocybe acutoconica +Hygrophorus borealis +Hygrophorus caeruleus +Hygrophorus inocybiformis +Hygrophorus kauffmanii +Hygrophorus marzuolus +Hygrophorus purpurascens +Hygrophorus russula +Hygrophorus sordidus +Hygrophorus tennesseensis +Hygrophorus turundus +Neohygrophorus angelesianus +Cortinarius armillatus +Cortinarius atkinsonianus +Cortinarius corrugatus +Cortinarius gentilis +Cortinarius mutabilis +Cortinarius semisanguineus +Cortinarius subfoetidus +Cortinarius violaceus +Gymnopilus spectabilis +Gymnopilus validipes +Gymnopilus ventricosus +mold +mildew +candida +houseplant +succulent +weed +sporophyll +sporangium +poisonous plant +vine +tree +bean tree +gymnospermous tree +conifer +angiospermous tree +nut tree +spice tree +bonsai +subshrub +bramble +liana +desert plant +marsh plant +strangler +root +receptacle +scape +peduncle +flower cluster +raceme +cyme +bulbous plant +fruit +seed +bean +nut +berry +aggregate fruit +drupe +drupelet +pome +pod +husk +buckthorn +vinifera +true pepper +peperomia +bract +palmate leaf +pinnate leaf +dentate leaf +branchlet +polypody +strap fern +staghorn fern +spleenwort +chain fern +davallia +hare's-foot fern +shield fern +wood fern +lady fern +bladder fern +holly fern +woodsia +maidenhair +brittle maidenhair +lip fern +cliff brake +horsetail +club moss +spikemoss +beech fern +shoestring fungus +Armillaria caligata +Armillaria ponderosa +Armillaria zelleri +honey mushroom +milkweed +stapelia +stephanotis +orangery +figure +plane figure +solid figure +line +convex shape +concave shape +cylinder +round shape +polygon +concave polygon +amorphous shape +closed curve +simple closed curve +cone +circle +ring +loop +ellipse +triangle +spherical polygon +angular distance +groove +bulge +bow +balance +toroid +boundary +incisure +notch +wrinkle +tree +regular polyhedron +carbon +rock +soil +high explosive +culture medium +agar +paper +paving +plaster +stucco +tear gas +vitamin +fat-soluble vitamin +water-soluble vitamin +vitamin A +B-complex vitamin +vitamin E +vitamin K diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/inet9k.map" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/inet9k.map" new file mode 100644 index 00000000..c91b3c15 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/inet9k.map" @@ -0,0 +1,200 @@ +2687 +4107 +8407 +7254 +42 +6797 +127 +2268 +2442 +3704 +260 +1970 +58 +4443 +2661 +2043 +2039 +4858 +4007 +6858 +8408 +166 +2523 +3768 +4347 +6527 +2446 +5005 +3274 +3678 +4918 +709 +4072 +8428 +7223 +2251 +3802 +3848 +7271 +2677 +8267 +2849 +2518 +2738 +3746 +5105 +3430 +3503 +2249 +1841 +2032 +2358 +122 +3984 +4865 +3246 +5095 +6912 +6878 +8467 +2741 +1973 +3057 +7217 +1872 +44 +2452 +3637 +2704 +6917 +2715 +6734 +2325 +6864 +6677 +2035 +1949 +338 +2664 +5122 +1844 +784 +2223 +7188 +2719 +2670 +4830 +158 +4818 +7228 +1965 +7342 +786 +2095 +8281 +8258 +7406 +3915 +8382 +2437 +2837 +82 +6871 +1876 +7447 +8285 +5007 +2740 +3463 +5103 +3755 +4910 +6809 +3800 +118 +3396 +3092 +2709 +81 +7105 +4036 +2366 +1846 +5177 +2684 +64 +2041 +3919 +700 +3724 +1742 +39 +807 +7184 +2256 +235 +2778 +2996 +2030 +3714 +7167 +2369 +6705 +6861 +5096 +2597 +2166 +2036 +3228 +3747 +2711 +8300 +2226 +7153 +7255 +2631 +7109 +8242 +7445 +3776 +3803 +3690 +2025 +2521 +2316 +7190 +8249 +3352 +2639 +2887 +100 +4219 +3344 +5008 +7224 +3351 +2434 +2074 +2034 +8304 +5004 +6868 +5102 +2645 +4071 +2716 +2717 +7420 +3499 +3763 +5084 +2676 +2046 +5107 +5097 +3944 +4097 +7132 +3956 +7343 diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/kite.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/kite.jpg" new file mode 100644 index 00000000..9eb325ac Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/kite.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_0.png" new file mode 100644 index 00000000..77878ecc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_1.png" new file mode 100644 index 00000000..86181c0b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_2.png" new file mode 100644 index 00000000..5d430467 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_3.png" new file mode 100644 index 00000000..353401fd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_4.png" new file mode 100644 index 00000000..d22f891c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_5.png" new file mode 100644 index 00000000..7f65183f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_6.png" new file mode 100644 index 00000000..18eb1730 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_7.png" new file mode 100644 index 00000000..b45964b1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/100_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_0.png" new file mode 100644 index 00000000..8739bc7c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_1.png" new file mode 100644 index 00000000..5a39331d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_2.png" new file mode 100644 index 00000000..c2234777 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_3.png" new file mode 100644 index 00000000..09f50e38 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_4.png" new file mode 100644 index 00000000..7d7960bf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_5.png" new file mode 100644 index 00000000..08d80033 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_6.png" new file mode 100644 index 00000000..9d554db3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_7.png" new file mode 100644 index 00000000..37855f0d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/101_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_0.png" new file mode 100644 index 00000000..7b8b0fb1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_1.png" new file mode 100644 index 00000000..ade5aa52 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_2.png" new file mode 100644 index 00000000..2068f0be Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_3.png" new file mode 100644 index 00000000..00e494e5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_4.png" new file mode 100644 index 00000000..37637d36 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_5.png" new file mode 100644 index 00000000..a86b69bf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_6.png" new file mode 100644 index 00000000..7d6889ef Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_7.png" new file mode 100644 index 00000000..a9a73815 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/102_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_0.png" new file mode 100644 index 00000000..17cc959e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_1.png" new file mode 100644 index 00000000..175794c4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_2.png" new file mode 100644 index 00000000..415038d4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_3.png" new file mode 100644 index 00000000..1101880f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_4.png" new file mode 100644 index 00000000..b8bf32e0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_5.png" new file mode 100644 index 00000000..6c81a57e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_6.png" new file mode 100644 index 00000000..ce580c0b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_7.png" new file mode 100644 index 00000000..1919f01f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/103_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_0.png" new file mode 100644 index 00000000..4ce801bc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_1.png" new file mode 100644 index 00000000..cdc2ba69 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_2.png" new file mode 100644 index 00000000..aa88c847 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_3.png" new file mode 100644 index 00000000..d5742675 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_4.png" new file mode 100644 index 00000000..71f96623 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_5.png" new file mode 100644 index 00000000..3159b0e9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_6.png" new file mode 100644 index 00000000..018e0e1b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_7.png" new file mode 100644 index 00000000..39fbe166 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/104_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_0.png" new file mode 100644 index 00000000..388be1ae Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_1.png" new file mode 100644 index 00000000..284a1305 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_2.png" new file mode 100644 index 00000000..d378969f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_3.png" new file mode 100644 index 00000000..f9ebb66f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_4.png" new file mode 100644 index 00000000..afb260bd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_5.png" new file mode 100644 index 00000000..53274dd7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_6.png" new file mode 100644 index 00000000..6b952eaf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_7.png" new file mode 100644 index 00000000..02b1b7d7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/105_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_0.png" new file mode 100644 index 00000000..70752591 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_1.png" new file mode 100644 index 00000000..66e73abc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_2.png" new file mode 100644 index 00000000..aaf88c68 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_3.png" new file mode 100644 index 00000000..bc6b981c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_4.png" new file mode 100644 index 00000000..b662b7e2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_5.png" new file mode 100644 index 00000000..43b45616 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_6.png" new file mode 100644 index 00000000..e6676643 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_7.png" new file mode 100644 index 00000000..727f3f6b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/106_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_0.png" new file mode 100644 index 00000000..9c8d8361 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_1.png" new file mode 100644 index 00000000..7dc3d2bc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_2.png" new file mode 100644 index 00000000..d27cf783 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_3.png" new file mode 100644 index 00000000..04b6c22b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_4.png" new file mode 100644 index 00000000..cbc45156 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_5.png" new file mode 100644 index 00000000..bc9730c7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_6.png" new file mode 100644 index 00000000..ffbe415f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_7.png" new file mode 100644 index 00000000..95f81a59 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/107_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_0.png" new file mode 100644 index 00000000..ce05b224 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_1.png" new file mode 100644 index 00000000..70d38953 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_2.png" new file mode 100644 index 00000000..7a95038e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_3.png" new file mode 100644 index 00000000..81637b38 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_4.png" new file mode 100644 index 00000000..0ea83f24 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_5.png" new file mode 100644 index 00000000..98d79d89 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_6.png" new file mode 100644 index 00000000..25303aa8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_7.png" new file mode 100644 index 00000000..6fb03a5d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/108_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_0.png" new file mode 100644 index 00000000..8169faf8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_1.png" new file mode 100644 index 00000000..16bc989d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_2.png" new file mode 100644 index 00000000..cf8cf63d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_3.png" new file mode 100644 index 00000000..5f6757b9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_4.png" new file mode 100644 index 00000000..5d9fdab7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_5.png" new file mode 100644 index 00000000..be6b733e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_6.png" new file mode 100644 index 00000000..a02a1175 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_7.png" new file mode 100644 index 00000000..1349d93a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/109_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_0.png" new file mode 100644 index 00000000..49a25823 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_1.png" new file mode 100644 index 00000000..10630cce Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_2.png" new file mode 100644 index 00000000..f9004da4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_3.png" new file mode 100644 index 00000000..b0d6ae1b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_4.png" new file mode 100644 index 00000000..8f57528a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_5.png" new file mode 100644 index 00000000..b335e497 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_6.png" new file mode 100644 index 00000000..450fbb63 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_7.png" new file mode 100644 index 00000000..c7b4754a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/110_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_0.png" new file mode 100644 index 00000000..a0e58834 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_1.png" new file mode 100644 index 00000000..9c17d574 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_2.png" new file mode 100644 index 00000000..47710869 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_3.png" new file mode 100644 index 00000000..bfba021e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_4.png" new file mode 100644 index 00000000..7a4aeda2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_5.png" new file mode 100644 index 00000000..180a9c58 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_6.png" new file mode 100644 index 00000000..e1482cd3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_7.png" new file mode 100644 index 00000000..c9355d06 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/111_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_0.png" new file mode 100644 index 00000000..d732efeb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_1.png" new file mode 100644 index 00000000..11243af7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_2.png" new file mode 100644 index 00000000..c3c42209 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_3.png" new file mode 100644 index 00000000..f830185e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_4.png" new file mode 100644 index 00000000..a4b184a4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_5.png" new file mode 100644 index 00000000..02f97a20 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_6.png" new file mode 100644 index 00000000..2001b39e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_7.png" new file mode 100644 index 00000000..9a14a71e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/112_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_0.png" new file mode 100644 index 00000000..e36c84ea Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_1.png" new file mode 100644 index 00000000..4c81c210 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_2.png" new file mode 100644 index 00000000..b29b8d01 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_3.png" new file mode 100644 index 00000000..62335849 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_4.png" new file mode 100644 index 00000000..d1373f93 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_5.png" new file mode 100644 index 00000000..ecfa110b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_6.png" new file mode 100644 index 00000000..c4e0d989 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_7.png" new file mode 100644 index 00000000..55ac8cfe Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/113_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_0.png" new file mode 100644 index 00000000..9d42671d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_1.png" new file mode 100644 index 00000000..277eed4f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_2.png" new file mode 100644 index 00000000..9c18af38 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_3.png" new file mode 100644 index 00000000..412f3204 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_4.png" new file mode 100644 index 00000000..65912f08 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_5.png" new file mode 100644 index 00000000..fdf7bd2f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_6.png" new file mode 100644 index 00000000..8f6b639e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_7.png" new file mode 100644 index 00000000..acf9180c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/114_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_0.png" new file mode 100644 index 00000000..4767c453 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_1.png" new file mode 100644 index 00000000..79f5d39c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_2.png" new file mode 100644 index 00000000..963c0684 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_3.png" new file mode 100644 index 00000000..bc0d24f5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_4.png" new file mode 100644 index 00000000..a39b0f0c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_5.png" new file mode 100644 index 00000000..63e00783 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_6.png" new file mode 100644 index 00000000..344ef849 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_7.png" new file mode 100644 index 00000000..c6e743c0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/115_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_0.png" new file mode 100644 index 00000000..bf9b263d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_1.png" new file mode 100644 index 00000000..2fb12a9d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_2.png" new file mode 100644 index 00000000..dd044917 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_3.png" new file mode 100644 index 00000000..0314e85e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_4.png" new file mode 100644 index 00000000..cf919a6b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_5.png" new file mode 100644 index 00000000..c9e04ed2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_6.png" new file mode 100644 index 00000000..1d0ab79a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_7.png" new file mode 100644 index 00000000..1fcdaa6e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/116_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_0.png" new file mode 100644 index 00000000..917b4a21 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_1.png" new file mode 100644 index 00000000..59cae8a9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_2.png" new file mode 100644 index 00000000..d7c7f33c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_3.png" new file mode 100644 index 00000000..18679c39 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_4.png" new file mode 100644 index 00000000..bceedf94 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_5.png" new file mode 100644 index 00000000..c0bddab6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_6.png" new file mode 100644 index 00000000..731fd144 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_7.png" new file mode 100644 index 00000000..c04ed0b1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/117_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_0.png" new file mode 100644 index 00000000..4b8dfc64 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_1.png" new file mode 100644 index 00000000..fa886ac2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_2.png" new file mode 100644 index 00000000..958ff5e7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_3.png" new file mode 100644 index 00000000..241b7880 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_4.png" new file mode 100644 index 00000000..93991521 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_5.png" new file mode 100644 index 00000000..279c9543 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_6.png" new file mode 100644 index 00000000..9379cb99 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_7.png" new file mode 100644 index 00000000..b34ca8a4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/118_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_0.png" new file mode 100644 index 00000000..ae03b912 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_1.png" new file mode 100644 index 00000000..7794fb67 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_2.png" new file mode 100644 index 00000000..976c49b9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_3.png" new file mode 100644 index 00000000..2e0160ed Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_4.png" new file mode 100644 index 00000000..05409276 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_5.png" new file mode 100644 index 00000000..4649a590 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_6.png" new file mode 100644 index 00000000..eb5e0fbf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_7.png" new file mode 100644 index 00000000..5615e770 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/119_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_0.png" new file mode 100644 index 00000000..64fd621a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_1.png" new file mode 100644 index 00000000..e13ecef8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_2.png" new file mode 100644 index 00000000..b6ae6049 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_3.png" new file mode 100644 index 00000000..13a4c3c8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_4.png" new file mode 100644 index 00000000..af550a87 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_5.png" new file mode 100644 index 00000000..38474e43 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_6.png" new file mode 100644 index 00000000..e356cded Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_7.png" new file mode 100644 index 00000000..5a585b4e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/120_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_0.png" new file mode 100644 index 00000000..2c203810 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_1.png" new file mode 100644 index 00000000..820c17d3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_2.png" new file mode 100644 index 00000000..fabda007 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_3.png" new file mode 100644 index 00000000..79ac0b1d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_4.png" new file mode 100644 index 00000000..7ded7297 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_5.png" new file mode 100644 index 00000000..5d59b5aa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_6.png" new file mode 100644 index 00000000..49a63f3c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_7.png" new file mode 100644 index 00000000..fea7b9e2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/121_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_0.png" new file mode 100644 index 00000000..76ed2702 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_1.png" new file mode 100644 index 00000000..57f2857c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_2.png" new file mode 100644 index 00000000..d9f27cdd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_3.png" new file mode 100644 index 00000000..c0657902 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_4.png" new file mode 100644 index 00000000..62b891e2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_5.png" new file mode 100644 index 00000000..276222eb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_6.png" new file mode 100644 index 00000000..0b2924e3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_7.png" new file mode 100644 index 00000000..87087784 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/122_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_0.png" new file mode 100644 index 00000000..95f92aaa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_1.png" new file mode 100644 index 00000000..e0e4fdd7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_2.png" new file mode 100644 index 00000000..6a9c0b0e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_3.png" new file mode 100644 index 00000000..8783377b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_4.png" new file mode 100644 index 00000000..c9de4f73 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_5.png" new file mode 100644 index 00000000..8deaa3c6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_6.png" new file mode 100644 index 00000000..47ca880b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_7.png" new file mode 100644 index 00000000..bf3a5d72 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/123_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_0.png" new file mode 100644 index 00000000..a54db7c0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_1.png" new file mode 100644 index 00000000..c5453610 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_2.png" new file mode 100644 index 00000000..c5a6a76b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_3.png" new file mode 100644 index 00000000..37b9e822 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_4.png" new file mode 100644 index 00000000..0521fe20 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_5.png" new file mode 100644 index 00000000..a5ad765f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_6.png" new file mode 100644 index 00000000..2dbf0f13 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_7.png" new file mode 100644 index 00000000..0730ca0c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/124_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_0.png" new file mode 100644 index 00000000..67e37b29 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_1.png" new file mode 100644 index 00000000..4dc1ea52 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_2.png" new file mode 100644 index 00000000..6f3babed Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_3.png" new file mode 100644 index 00000000..4c7a26c7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_4.png" new file mode 100644 index 00000000..149eaa9b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_5.png" new file mode 100644 index 00000000..8ae40f7a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_6.png" new file mode 100644 index 00000000..58930431 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_7.png" new file mode 100644 index 00000000..47bd85b9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/125_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_0.png" new file mode 100644 index 00000000..f602708c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_1.png" new file mode 100644 index 00000000..cb8b76ea Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_2.png" new file mode 100644 index 00000000..ccef7a2c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_3.png" new file mode 100644 index 00000000..9fcf7ab9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_4.png" new file mode 100644 index 00000000..d3f01bfe Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_5.png" new file mode 100644 index 00000000..00c57f14 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_6.png" new file mode 100644 index 00000000..2c2dbb19 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_7.png" new file mode 100644 index 00000000..55ee5a79 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/126_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_0.png" new file mode 100644 index 00000000..22be2ded Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_1.png" new file mode 100644 index 00000000..21abfa47 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_2.png" new file mode 100644 index 00000000..eae41b9c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_3.png" new file mode 100644 index 00000000..fcc007e1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_4.png" new file mode 100644 index 00000000..f4c498cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_5.png" new file mode 100644 index 00000000..16248c94 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_6.png" new file mode 100644 index 00000000..1e50183f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_7.png" new file mode 100644 index 00000000..81bd1d5e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/32_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_0.png" new file mode 100644 index 00000000..d1a11418 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_1.png" new file mode 100644 index 00000000..a13dd33a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_2.png" new file mode 100644 index 00000000..57201b2e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_3.png" new file mode 100644 index 00000000..02101603 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_4.png" new file mode 100644 index 00000000..fd181d17 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_5.png" new file mode 100644 index 00000000..ed4387a6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_6.png" new file mode 100644 index 00000000..11262923 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_7.png" new file mode 100644 index 00000000..1d67d55a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/33_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_0.png" new file mode 100644 index 00000000..7b24cfa0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_1.png" new file mode 100644 index 00000000..39f7edc7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_2.png" new file mode 100644 index 00000000..00c4e87e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_3.png" new file mode 100644 index 00000000..79d51762 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_4.png" new file mode 100644 index 00000000..d5248308 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_5.png" new file mode 100644 index 00000000..25a7e43f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_6.png" new file mode 100644 index 00000000..bf3b6135 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_7.png" new file mode 100644 index 00000000..1148f2d7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/34_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_0.png" new file mode 100644 index 00000000..ff572a8d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_1.png" new file mode 100644 index 00000000..1bba4945 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_2.png" new file mode 100644 index 00000000..b7d708ec Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_3.png" new file mode 100644 index 00000000..302cc73f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_4.png" new file mode 100644 index 00000000..9e11a20b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_5.png" new file mode 100644 index 00000000..9ab56b3a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_6.png" new file mode 100644 index 00000000..d75876c6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_7.png" new file mode 100644 index 00000000..1bbdc9fe Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/35_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_0.png" new file mode 100644 index 00000000..929660af Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_1.png" new file mode 100644 index 00000000..646e7705 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_2.png" new file mode 100644 index 00000000..ba6603cb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_3.png" new file mode 100644 index 00000000..56e5ba3f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_4.png" new file mode 100644 index 00000000..e87046c9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_5.png" new file mode 100644 index 00000000..5a7672d2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_6.png" new file mode 100644 index 00000000..b16b2a26 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_7.png" new file mode 100644 index 00000000..1f943127 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/36_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_0.png" new file mode 100644 index 00000000..44b7f4e5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_1.png" new file mode 100644 index 00000000..36712dca Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_2.png" new file mode 100644 index 00000000..759aed9c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_3.png" new file mode 100644 index 00000000..03253dd3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_4.png" new file mode 100644 index 00000000..ed5e4bd3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_5.png" new file mode 100644 index 00000000..fe205908 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_6.png" new file mode 100644 index 00000000..11f34eb1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_7.png" new file mode 100644 index 00000000..dee9ba35 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/37_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_0.png" new file mode 100644 index 00000000..47c51e18 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_1.png" new file mode 100644 index 00000000..3abcc8bb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_2.png" new file mode 100644 index 00000000..47a85e91 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_3.png" new file mode 100644 index 00000000..1af926ef Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_4.png" new file mode 100644 index 00000000..783342a5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_5.png" new file mode 100644 index 00000000..20b92228 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_6.png" new file mode 100644 index 00000000..f68e4d96 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_7.png" new file mode 100644 index 00000000..c6ffc54b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/38_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_0.png" new file mode 100644 index 00000000..860f831b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_1.png" new file mode 100644 index 00000000..021b2327 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_2.png" new file mode 100644 index 00000000..7ac7b155 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_3.png" new file mode 100644 index 00000000..82baf947 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_4.png" new file mode 100644 index 00000000..4fb41865 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_5.png" new file mode 100644 index 00000000..1c613c5d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_6.png" new file mode 100644 index 00000000..e570bcd3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_7.png" new file mode 100644 index 00000000..5cb309f8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/39_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_0.png" new file mode 100644 index 00000000..346c6339 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_1.png" new file mode 100644 index 00000000..7dfa7b5e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_2.png" new file mode 100644 index 00000000..a2b0e0f0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_3.png" new file mode 100644 index 00000000..f7274257 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_4.png" new file mode 100644 index 00000000..4c89b55e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_5.png" new file mode 100644 index 00000000..35b4fcd2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_6.png" new file mode 100644 index 00000000..215972b7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_7.png" new file mode 100644 index 00000000..0d8eb552 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/40_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_0.png" new file mode 100644 index 00000000..42dd3870 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_1.png" new file mode 100644 index 00000000..0e1da960 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_2.png" new file mode 100644 index 00000000..31cf47da Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_3.png" new file mode 100644 index 00000000..e5121869 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_4.png" new file mode 100644 index 00000000..150cb579 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_5.png" new file mode 100644 index 00000000..7ac1a183 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_6.png" new file mode 100644 index 00000000..4bdd2f05 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_7.png" new file mode 100644 index 00000000..50568ba2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/41_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_0.png" new file mode 100644 index 00000000..f41cd845 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_1.png" new file mode 100644 index 00000000..4aee8e67 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_2.png" new file mode 100644 index 00000000..e045f1db Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_3.png" new file mode 100644 index 00000000..edc194ba Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_4.png" new file mode 100644 index 00000000..e417c3e5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_5.png" new file mode 100644 index 00000000..d6593c6a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_6.png" new file mode 100644 index 00000000..ffcaaed3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_7.png" new file mode 100644 index 00000000..4895af70 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/42_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_0.png" new file mode 100644 index 00000000..af5295e5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_1.png" new file mode 100644 index 00000000..0e20f345 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_2.png" new file mode 100644 index 00000000..be2fbb30 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_3.png" new file mode 100644 index 00000000..5183eb1f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_4.png" new file mode 100644 index 00000000..526b5002 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_5.png" new file mode 100644 index 00000000..03d62ff7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_6.png" new file mode 100644 index 00000000..b245a4cb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_7.png" new file mode 100644 index 00000000..e21688a9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/43_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_0.png" new file mode 100644 index 00000000..63e66ffa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_1.png" new file mode 100644 index 00000000..49f2fe2c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_2.png" new file mode 100644 index 00000000..32fd2ded Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_3.png" new file mode 100644 index 00000000..bb1118fa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_4.png" new file mode 100644 index 00000000..cd80bbdc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_5.png" new file mode 100644 index 00000000..f83e1151 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_6.png" new file mode 100644 index 00000000..1f8ad892 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_7.png" new file mode 100644 index 00000000..8c5d6328 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/44_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_0.png" new file mode 100644 index 00000000..701bdc8d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_1.png" new file mode 100644 index 00000000..976103fc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_2.png" new file mode 100644 index 00000000..4bc50cf4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_3.png" new file mode 100644 index 00000000..335c2c75 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_4.png" new file mode 100644 index 00000000..8fc2738d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_5.png" new file mode 100644 index 00000000..acc4c09c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_6.png" new file mode 100644 index 00000000..00771044 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_7.png" new file mode 100644 index 00000000..d486ccd9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/45_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_0.png" new file mode 100644 index 00000000..44fa798b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_1.png" new file mode 100644 index 00000000..0f35bbb9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_2.png" new file mode 100644 index 00000000..e3355f5f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_3.png" new file mode 100644 index 00000000..9226458b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_4.png" new file mode 100644 index 00000000..77a841c3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_5.png" new file mode 100644 index 00000000..e86cbaf9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_6.png" new file mode 100644 index 00000000..5011dedc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_7.png" new file mode 100644 index 00000000..53c8871d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/46_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_0.png" new file mode 100644 index 00000000..9b7c0500 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_1.png" new file mode 100644 index 00000000..75ba1120 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_2.png" new file mode 100644 index 00000000..2f07656c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_3.png" new file mode 100644 index 00000000..3fd07280 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_4.png" new file mode 100644 index 00000000..9e503ebc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_5.png" new file mode 100644 index 00000000..fddef157 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_6.png" new file mode 100644 index 00000000..0117b55a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_7.png" new file mode 100644 index 00000000..fff13237 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/47_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_0.png" new file mode 100644 index 00000000..4775310f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_1.png" new file mode 100644 index 00000000..231cd3f6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_2.png" new file mode 100644 index 00000000..b653e9cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_3.png" new file mode 100644 index 00000000..d148a75f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_4.png" new file mode 100644 index 00000000..9e1b0d5d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_5.png" new file mode 100644 index 00000000..f554133a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_6.png" new file mode 100644 index 00000000..d8419285 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_7.png" new file mode 100644 index 00000000..145ed36c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/48_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_0.png" new file mode 100644 index 00000000..f979710b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_1.png" new file mode 100644 index 00000000..0cb26d4b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_2.png" new file mode 100644 index 00000000..0684a715 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_3.png" new file mode 100644 index 00000000..ce89eb78 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_4.png" new file mode 100644 index 00000000..a8f6b14b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_5.png" new file mode 100644 index 00000000..c7e80337 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_6.png" new file mode 100644 index 00000000..a091704d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_7.png" new file mode 100644 index 00000000..f385b75a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/49_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_0.png" new file mode 100644 index 00000000..6af169d1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_1.png" new file mode 100644 index 00000000..a3c03009 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_2.png" new file mode 100644 index 00000000..1ea6ff65 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_3.png" new file mode 100644 index 00000000..3c0bf1d8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_4.png" new file mode 100644 index 00000000..eb6a9d91 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_5.png" new file mode 100644 index 00000000..acdb5ed7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_6.png" new file mode 100644 index 00000000..c74ac5a2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_7.png" new file mode 100644 index 00000000..6d3f530a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/50_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_0.png" new file mode 100644 index 00000000..48bad97f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_1.png" new file mode 100644 index 00000000..7703a747 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_2.png" new file mode 100644 index 00000000..804e21b3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_3.png" new file mode 100644 index 00000000..5b087578 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_4.png" new file mode 100644 index 00000000..30727fb1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_5.png" new file mode 100644 index 00000000..de240eae Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_6.png" new file mode 100644 index 00000000..c252b01e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_7.png" new file mode 100644 index 00000000..806f99b2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/51_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_0.png" new file mode 100644 index 00000000..a554b313 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_1.png" new file mode 100644 index 00000000..936c84fd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_2.png" new file mode 100644 index 00000000..57e3f05c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_3.png" new file mode 100644 index 00000000..6a8f99ef Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_4.png" new file mode 100644 index 00000000..91f97f0b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_5.png" new file mode 100644 index 00000000..a78504fe Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_6.png" new file mode 100644 index 00000000..f52bd2c5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_7.png" new file mode 100644 index 00000000..621b8e04 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/52_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_0.png" new file mode 100644 index 00000000..a750615c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_1.png" new file mode 100644 index 00000000..1c4e097d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_2.png" new file mode 100644 index 00000000..f5238560 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_3.png" new file mode 100644 index 00000000..85505f80 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_4.png" new file mode 100644 index 00000000..14e8da11 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_5.png" new file mode 100644 index 00000000..79781fc6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_6.png" new file mode 100644 index 00000000..a6e18638 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_7.png" new file mode 100644 index 00000000..bff5eb68 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/53_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_0.png" new file mode 100644 index 00000000..98ce4239 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_1.png" new file mode 100644 index 00000000..643ef36b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_2.png" new file mode 100644 index 00000000..2c3894ea Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_3.png" new file mode 100644 index 00000000..6190fdc2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_4.png" new file mode 100644 index 00000000..92afc20c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_5.png" new file mode 100644 index 00000000..feab352e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_6.png" new file mode 100644 index 00000000..c46698f3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_7.png" new file mode 100644 index 00000000..175dbeb4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/54_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_0.png" new file mode 100644 index 00000000..644838b0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_1.png" new file mode 100644 index 00000000..b84e0eb5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_2.png" new file mode 100644 index 00000000..3896d08a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_3.png" new file mode 100644 index 00000000..21e92663 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_4.png" new file mode 100644 index 00000000..d6aed1b8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_5.png" new file mode 100644 index 00000000..1f60c36e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_6.png" new file mode 100644 index 00000000..2a7f1fbc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_7.png" new file mode 100644 index 00000000..80c527b2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/55_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_0.png" new file mode 100644 index 00000000..8a1e0c76 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_1.png" new file mode 100644 index 00000000..a0a81a07 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_2.png" new file mode 100644 index 00000000..367f20ed Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_3.png" new file mode 100644 index 00000000..cf56f8f9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_4.png" new file mode 100644 index 00000000..e57cce75 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_5.png" new file mode 100644 index 00000000..c206547d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_6.png" new file mode 100644 index 00000000..040692af Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_7.png" new file mode 100644 index 00000000..4c27c106 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/56_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_0.png" new file mode 100644 index 00000000..e20a46f8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_1.png" new file mode 100644 index 00000000..17cd2621 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_2.png" new file mode 100644 index 00000000..98fad29b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_3.png" new file mode 100644 index 00000000..ba80aa01 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_4.png" new file mode 100644 index 00000000..e9822435 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_5.png" new file mode 100644 index 00000000..e947ff89 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_6.png" new file mode 100644 index 00000000..c4ae076f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_7.png" new file mode 100644 index 00000000..bd4ca161 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/57_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_0.png" new file mode 100644 index 00000000..d9e35f7c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_1.png" new file mode 100644 index 00000000..0dd6dd09 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_2.png" new file mode 100644 index 00000000..b9f13194 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_3.png" new file mode 100644 index 00000000..06043377 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_4.png" new file mode 100644 index 00000000..7283e030 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_5.png" new file mode 100644 index 00000000..2df3db93 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_6.png" new file mode 100644 index 00000000..e1209092 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_7.png" new file mode 100644 index 00000000..e85fc0a5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/58_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_0.png" new file mode 100644 index 00000000..09b21205 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_1.png" new file mode 100644 index 00000000..4b918148 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_2.png" new file mode 100644 index 00000000..cc302c20 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_3.png" new file mode 100644 index 00000000..6921796c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_4.png" new file mode 100644 index 00000000..4b77147b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_5.png" new file mode 100644 index 00000000..4325e62c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_6.png" new file mode 100644 index 00000000..135da331 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_7.png" new file mode 100644 index 00000000..353ae334 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/59_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_0.png" new file mode 100644 index 00000000..210e77df Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_1.png" new file mode 100644 index 00000000..507c736d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_2.png" new file mode 100644 index 00000000..42273228 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_3.png" new file mode 100644 index 00000000..ac4d0263 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_4.png" new file mode 100644 index 00000000..5cf89ed3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_5.png" new file mode 100644 index 00000000..5ceb7fe1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_6.png" new file mode 100644 index 00000000..45121a7e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_7.png" new file mode 100644 index 00000000..33eb9e30 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/60_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_0.png" new file mode 100644 index 00000000..72bc6bfa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_1.png" new file mode 100644 index 00000000..50def570 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_2.png" new file mode 100644 index 00000000..a0e9a670 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_3.png" new file mode 100644 index 00000000..0b7d1492 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_4.png" new file mode 100644 index 00000000..c0b71d85 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_5.png" new file mode 100644 index 00000000..cf39e63d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_6.png" new file mode 100644 index 00000000..95282d4a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_7.png" new file mode 100644 index 00000000..6da5c024 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/61_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_0.png" new file mode 100644 index 00000000..bb121097 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_1.png" new file mode 100644 index 00000000..5b82445c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_2.png" new file mode 100644 index 00000000..d4ca5a6d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_3.png" new file mode 100644 index 00000000..24ddea86 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_4.png" new file mode 100644 index 00000000..34130a26 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_5.png" new file mode 100644 index 00000000..823d9969 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_6.png" new file mode 100644 index 00000000..63dd85d3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_7.png" new file mode 100644 index 00000000..7c6158f2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/62_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_0.png" new file mode 100644 index 00000000..2d9571ea Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_1.png" new file mode 100644 index 00000000..5376e070 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_2.png" new file mode 100644 index 00000000..746ffa03 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_3.png" new file mode 100644 index 00000000..58bb35ac Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_4.png" new file mode 100644 index 00000000..ff1dc1a3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_5.png" new file mode 100644 index 00000000..13e34ce4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_6.png" new file mode 100644 index 00000000..9407c833 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_7.png" new file mode 100644 index 00000000..e9c3edf3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/63_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_0.png" new file mode 100644 index 00000000..0a3a1013 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_1.png" new file mode 100644 index 00000000..63139606 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_2.png" new file mode 100644 index 00000000..c49565c7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_3.png" new file mode 100644 index 00000000..c697f9bd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_4.png" new file mode 100644 index 00000000..de194c73 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_5.png" new file mode 100644 index 00000000..99050043 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_6.png" new file mode 100644 index 00000000..7b915693 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_7.png" new file mode 100644 index 00000000..b9ebcee2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/64_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_0.png" new file mode 100644 index 00000000..c3880661 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_1.png" new file mode 100644 index 00000000..9f7d7f7e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_2.png" new file mode 100644 index 00000000..6f766948 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_3.png" new file mode 100644 index 00000000..35931288 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_4.png" new file mode 100644 index 00000000..23f4814b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_5.png" new file mode 100644 index 00000000..8eae6d7e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_6.png" new file mode 100644 index 00000000..02fec761 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_7.png" new file mode 100644 index 00000000..c80822e1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/65_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_0.png" new file mode 100644 index 00000000..278a401d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_1.png" new file mode 100644 index 00000000..47c3735f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_2.png" new file mode 100644 index 00000000..dfcf8c4c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_3.png" new file mode 100644 index 00000000..d8d69a74 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_4.png" new file mode 100644 index 00000000..842976ae Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_5.png" new file mode 100644 index 00000000..991caf87 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_6.png" new file mode 100644 index 00000000..32c52841 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_7.png" new file mode 100644 index 00000000..14e8609e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/66_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_0.png" new file mode 100644 index 00000000..7f2786a9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_1.png" new file mode 100644 index 00000000..798b421c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_2.png" new file mode 100644 index 00000000..802aaab4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_3.png" new file mode 100644 index 00000000..9d975ca1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_4.png" new file mode 100644 index 00000000..94ee5775 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_5.png" new file mode 100644 index 00000000..021a877f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_6.png" new file mode 100644 index 00000000..c3587323 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_7.png" new file mode 100644 index 00000000..46acdf29 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/67_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_0.png" new file mode 100644 index 00000000..9e86a2fc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_1.png" new file mode 100644 index 00000000..d7d3ac3f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_2.png" new file mode 100644 index 00000000..3a48f050 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_3.png" new file mode 100644 index 00000000..808603a7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_4.png" new file mode 100644 index 00000000..d4f9bd4c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_5.png" new file mode 100644 index 00000000..25d8a962 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_6.png" new file mode 100644 index 00000000..0059c7f0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_7.png" new file mode 100644 index 00000000..c2aa9228 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/68_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_0.png" new file mode 100644 index 00000000..51140e0a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_1.png" new file mode 100644 index 00000000..bcf7311e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_2.png" new file mode 100644 index 00000000..582b289c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_3.png" new file mode 100644 index 00000000..e3311233 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_4.png" new file mode 100644 index 00000000..a310f84c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_5.png" new file mode 100644 index 00000000..ad696687 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_6.png" new file mode 100644 index 00000000..a7b8f454 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_7.png" new file mode 100644 index 00000000..7f3200cb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/69_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_0.png" new file mode 100644 index 00000000..e0fb76c8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_1.png" new file mode 100644 index 00000000..40c8217c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_2.png" new file mode 100644 index 00000000..63c811b1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_3.png" new file mode 100644 index 00000000..7c93cf7e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_4.png" new file mode 100644 index 00000000..6033fb19 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_5.png" new file mode 100644 index 00000000..bfcf0289 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_6.png" new file mode 100644 index 00000000..5fe9cdb2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_7.png" new file mode 100644 index 00000000..027af86d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/70_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_0.png" new file mode 100644 index 00000000..679b5e92 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_1.png" new file mode 100644 index 00000000..6f5271b0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_2.png" new file mode 100644 index 00000000..93dc749d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_3.png" new file mode 100644 index 00000000..03a4bc6b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_4.png" new file mode 100644 index 00000000..3976418c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_5.png" new file mode 100644 index 00000000..b0c42958 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_6.png" new file mode 100644 index 00000000..bb8710d2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_7.png" new file mode 100644 index 00000000..68148a94 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/71_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_0.png" new file mode 100644 index 00000000..a2edd04a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_1.png" new file mode 100644 index 00000000..f1e8bcd4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_2.png" new file mode 100644 index 00000000..a9516f1a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_3.png" new file mode 100644 index 00000000..5b944907 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_4.png" new file mode 100644 index 00000000..83f7dbf0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_5.png" new file mode 100644 index 00000000..5a40ad33 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_6.png" new file mode 100644 index 00000000..b8898373 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_7.png" new file mode 100644 index 00000000..4ec34df5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/72_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_0.png" new file mode 100644 index 00000000..e5544322 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_1.png" new file mode 100644 index 00000000..08d1924e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_2.png" new file mode 100644 index 00000000..3c870856 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_3.png" new file mode 100644 index 00000000..11d0f760 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_4.png" new file mode 100644 index 00000000..ebacf1f3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_5.png" new file mode 100644 index 00000000..d58377d5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_6.png" new file mode 100644 index 00000000..293b96b2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_7.png" new file mode 100644 index 00000000..80f409d9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/73_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_0.png" new file mode 100644 index 00000000..cc1d9f36 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_1.png" new file mode 100644 index 00000000..91713328 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_2.png" new file mode 100644 index 00000000..c08cea88 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_3.png" new file mode 100644 index 00000000..ce8e8c84 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_4.png" new file mode 100644 index 00000000..b112fa68 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_5.png" new file mode 100644 index 00000000..c9a7bbb9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_6.png" new file mode 100644 index 00000000..8f72aace Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_7.png" new file mode 100644 index 00000000..f85a9f96 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/74_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_0.png" new file mode 100644 index 00000000..b1f3ac4c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_1.png" new file mode 100644 index 00000000..9f061096 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_2.png" new file mode 100644 index 00000000..9224666c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_3.png" new file mode 100644 index 00000000..eb764897 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_4.png" new file mode 100644 index 00000000..7dfee155 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_5.png" new file mode 100644 index 00000000..8b081f65 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_6.png" new file mode 100644 index 00000000..95631cf9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_7.png" new file mode 100644 index 00000000..db915eab Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/75_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_0.png" new file mode 100644 index 00000000..5ceef1d5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_1.png" new file mode 100644 index 00000000..53868311 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_2.png" new file mode 100644 index 00000000..6c8393ab Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_3.png" new file mode 100644 index 00000000..fbe57122 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_4.png" new file mode 100644 index 00000000..e47a6ebf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_5.png" new file mode 100644 index 00000000..f349490d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_6.png" new file mode 100644 index 00000000..e6611431 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_7.png" new file mode 100644 index 00000000..64d08340 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/76_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_0.png" new file mode 100644 index 00000000..05aab7db Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_1.png" new file mode 100644 index 00000000..64cb6085 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_2.png" new file mode 100644 index 00000000..2da938c7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_3.png" new file mode 100644 index 00000000..14179d90 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_4.png" new file mode 100644 index 00000000..894b4707 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_5.png" new file mode 100644 index 00000000..a55e5b63 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_6.png" new file mode 100644 index 00000000..4f0e7147 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_7.png" new file mode 100644 index 00000000..804e8c26 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/77_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_0.png" new file mode 100644 index 00000000..e1fede7b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_1.png" new file mode 100644 index 00000000..23b2a744 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_2.png" new file mode 100644 index 00000000..5471820f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_3.png" new file mode 100644 index 00000000..bc9659a6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_4.png" new file mode 100644 index 00000000..54b95f95 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_5.png" new file mode 100644 index 00000000..2c67a513 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_6.png" new file mode 100644 index 00000000..44326f55 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_7.png" new file mode 100644 index 00000000..4d5d8dc4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/78_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_0.png" new file mode 100644 index 00000000..f3f4c1e5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_1.png" new file mode 100644 index 00000000..23d960e7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_2.png" new file mode 100644 index 00000000..ce5c52be Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_3.png" new file mode 100644 index 00000000..b80a4f27 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_4.png" new file mode 100644 index 00000000..7fa16f88 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_5.png" new file mode 100644 index 00000000..c67c5bbe Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_6.png" new file mode 100644 index 00000000..e89ecd29 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_7.png" new file mode 100644 index 00000000..d964ae44 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/79_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_0.png" new file mode 100644 index 00000000..61403c9c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_1.png" new file mode 100644 index 00000000..992338d2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_2.png" new file mode 100644 index 00000000..cfbd4311 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_3.png" new file mode 100644 index 00000000..5de94723 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_4.png" new file mode 100644 index 00000000..0fecaf1c Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_5.png" new file mode 100644 index 00000000..cbf65bda Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_6.png" new file mode 100644 index 00000000..ff54a387 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_7.png" new file mode 100644 index 00000000..3d6f415b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/80_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_0.png" new file mode 100644 index 00000000..5a2025f8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_1.png" new file mode 100644 index 00000000..511aec02 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_2.png" new file mode 100644 index 00000000..8e2f7e96 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_3.png" new file mode 100644 index 00000000..52edfd4f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_4.png" new file mode 100644 index 00000000..e60c7a91 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_5.png" new file mode 100644 index 00000000..d58df4f3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_6.png" new file mode 100644 index 00000000..d31ba09d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_7.png" new file mode 100644 index 00000000..07705765 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/81_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_0.png" new file mode 100644 index 00000000..1bc3a983 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_1.png" new file mode 100644 index 00000000..e5931dc9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_2.png" new file mode 100644 index 00000000..a5f8bb7b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_3.png" new file mode 100644 index 00000000..8b138a96 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_4.png" new file mode 100644 index 00000000..8a570606 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_5.png" new file mode 100644 index 00000000..f4dc04e1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_6.png" new file mode 100644 index 00000000..2c7073a2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_7.png" new file mode 100644 index 00000000..f4d966dd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/82_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_0.png" new file mode 100644 index 00000000..c0487824 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_1.png" new file mode 100644 index 00000000..3515f98d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_2.png" new file mode 100644 index 00000000..4a13b8d7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_3.png" new file mode 100644 index 00000000..0944ac8b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_4.png" new file mode 100644 index 00000000..8b9f82f0 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_5.png" new file mode 100644 index 00000000..67f70adc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_6.png" new file mode 100644 index 00000000..0d3c0e13 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_7.png" new file mode 100644 index 00000000..0daab32d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/83_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_0.png" new file mode 100644 index 00000000..ffc3eb4a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_1.png" new file mode 100644 index 00000000..956e5eb8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_2.png" new file mode 100644 index 00000000..a1e94faf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_3.png" new file mode 100644 index 00000000..2369b0c2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_4.png" new file mode 100644 index 00000000..6d82ee80 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_5.png" new file mode 100644 index 00000000..6e95b706 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_6.png" new file mode 100644 index 00000000..9d62561d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_7.png" new file mode 100644 index 00000000..accde304 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/84_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_0.png" new file mode 100644 index 00000000..48e9906f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_1.png" new file mode 100644 index 00000000..30807206 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_2.png" new file mode 100644 index 00000000..e5a9369e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_3.png" new file mode 100644 index 00000000..5816c66b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_4.png" new file mode 100644 index 00000000..7d18ec0b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_5.png" new file mode 100644 index 00000000..f7b5550d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_6.png" new file mode 100644 index 00000000..7106103a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_7.png" new file mode 100644 index 00000000..7179daf8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/85_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_0.png" new file mode 100644 index 00000000..2412ea17 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_1.png" new file mode 100644 index 00000000..7de1777b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_2.png" new file mode 100644 index 00000000..aae67daa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_3.png" new file mode 100644 index 00000000..e932d2e7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_4.png" new file mode 100644 index 00000000..9a580c85 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_5.png" new file mode 100644 index 00000000..6766a5df Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_6.png" new file mode 100644 index 00000000..462e7290 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_7.png" new file mode 100644 index 00000000..7843c125 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/86_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_0.png" new file mode 100644 index 00000000..e7c12856 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_1.png" new file mode 100644 index 00000000..e0af6e0f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_2.png" new file mode 100644 index 00000000..4bdce941 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_3.png" new file mode 100644 index 00000000..2d446b92 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_4.png" new file mode 100644 index 00000000..2719131d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_5.png" new file mode 100644 index 00000000..f635def8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_6.png" new file mode 100644 index 00000000..25ddeb78 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_7.png" new file mode 100644 index 00000000..b26e7021 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/87_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_0.png" new file mode 100644 index 00000000..43b14276 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_1.png" new file mode 100644 index 00000000..5703b630 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_2.png" new file mode 100644 index 00000000..b3b565a8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_3.png" new file mode 100644 index 00000000..4afd6dd1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_4.png" new file mode 100644 index 00000000..198f7b01 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_5.png" new file mode 100644 index 00000000..e46b6410 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_6.png" new file mode 100644 index 00000000..81830a09 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_7.png" new file mode 100644 index 00000000..a916e4eb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/88_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_0.png" new file mode 100644 index 00000000..b6f9c4be Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_1.png" new file mode 100644 index 00000000..e5e7a1e2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_2.png" new file mode 100644 index 00000000..9f9d361e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_3.png" new file mode 100644 index 00000000..44048913 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_4.png" new file mode 100644 index 00000000..802bfe4b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_5.png" new file mode 100644 index 00000000..d77e019d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_6.png" new file mode 100644 index 00000000..4a4fa6b6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_7.png" new file mode 100644 index 00000000..b3dd7980 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/89_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_0.png" new file mode 100644 index 00000000..3e10db1a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_1.png" new file mode 100644 index 00000000..9c4e67e6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_2.png" new file mode 100644 index 00000000..92d0167a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_3.png" new file mode 100644 index 00000000..9d346a20 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_4.png" new file mode 100644 index 00000000..ba6012bb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_5.png" new file mode 100644 index 00000000..b664cd20 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_6.png" new file mode 100644 index 00000000..500c0999 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_7.png" new file mode 100644 index 00000000..3e899a8a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/90_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_0.png" new file mode 100644 index 00000000..0ad0d550 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_1.png" new file mode 100644 index 00000000..afbe0f0d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_2.png" new file mode 100644 index 00000000..d2c88991 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_3.png" new file mode 100644 index 00000000..002032da Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_4.png" new file mode 100644 index 00000000..795ce7d7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_5.png" new file mode 100644 index 00000000..1d1eb22b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_6.png" new file mode 100644 index 00000000..bb312676 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_7.png" new file mode 100644 index 00000000..70c2cf31 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/91_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_0.png" new file mode 100644 index 00000000..e730aed4 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_1.png" new file mode 100644 index 00000000..7f9b51d8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_2.png" new file mode 100644 index 00000000..f01916f5 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_3.png" new file mode 100644 index 00000000..b850533f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_4.png" new file mode 100644 index 00000000..ece16826 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_5.png" new file mode 100644 index 00000000..82166907 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_6.png" new file mode 100644 index 00000000..9b581fac Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_7.png" new file mode 100644 index 00000000..e57b2e8e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/92_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_0.png" new file mode 100644 index 00000000..c21f5220 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_1.png" new file mode 100644 index 00000000..64cbba6e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_2.png" new file mode 100644 index 00000000..a81e1cda Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_3.png" new file mode 100644 index 00000000..273f35cc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_4.png" new file mode 100644 index 00000000..b44e4c69 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_5.png" new file mode 100644 index 00000000..1e96e9b1 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_6.png" new file mode 100644 index 00000000..3407e552 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_7.png" new file mode 100644 index 00000000..428e0728 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/93_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_0.png" new file mode 100644 index 00000000..baa512b6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_1.png" new file mode 100644 index 00000000..5f1b1161 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_2.png" new file mode 100644 index 00000000..1cd051ea Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_3.png" new file mode 100644 index 00000000..a0a7264b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_4.png" new file mode 100644 index 00000000..26e82bc6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_5.png" new file mode 100644 index 00000000..19c32ecb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_6.png" new file mode 100644 index 00000000..e753cade Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_7.png" new file mode 100644 index 00000000..7d4dfb7f Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/94_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_0.png" new file mode 100644 index 00000000..2b255198 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_1.png" new file mode 100644 index 00000000..6fea8c2b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_2.png" new file mode 100644 index 00000000..d170be10 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_3.png" new file mode 100644 index 00000000..fe5501eb Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_4.png" new file mode 100644 index 00000000..ec87fee7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_5.png" new file mode 100644 index 00000000..efa9f0bc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_6.png" new file mode 100644 index 00000000..6840b824 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_7.png" new file mode 100644 index 00000000..85f887d8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/95_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_0.png" new file mode 100644 index 00000000..2033d9b9 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_1.png" new file mode 100644 index 00000000..c60d36aa Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_2.png" new file mode 100644 index 00000000..878dd1bc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_3.png" new file mode 100644 index 00000000..f7429a2a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_4.png" new file mode 100644 index 00000000..6dff9dac Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_5.png" new file mode 100644 index 00000000..4869f9d2 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_6.png" new file mode 100644 index 00000000..f6a8a696 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_7.png" new file mode 100644 index 00000000..89b19d45 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/96_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_0.png" new file mode 100644 index 00000000..64262248 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_1.png" new file mode 100644 index 00000000..f9a61f4a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_2.png" new file mode 100644 index 00000000..d1d02ace Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_3.png" new file mode 100644 index 00000000..7e9e936b Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_4.png" new file mode 100644 index 00000000..21dd17ea Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_5.png" new file mode 100644 index 00000000..5e59fa26 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_6.png" new file mode 100644 index 00000000..6f279a45 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_7.png" new file mode 100644 index 00000000..6447e6dd Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/97_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_0.png" new file mode 100644 index 00000000..3d259317 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_1.png" new file mode 100644 index 00000000..c76706a7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_2.png" new file mode 100644 index 00000000..6dceadbf Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_3.png" new file mode 100644 index 00000000..d3cf1bc6 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_4.png" new file mode 100644 index 00000000..5d5addc7 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_5.png" new file mode 100644 index 00000000..55479d94 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_6.png" new file mode 100644 index 00000000..4d8f3d92 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_7.png" new file mode 100644 index 00000000..cec60174 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/98_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_0.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_0.png" new file mode 100644 index 00000000..f5975c91 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_0.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_1.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_1.png" new file mode 100644 index 00000000..3cdfdec3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_1.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_2.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_2.png" new file mode 100644 index 00000000..a0dc5731 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_2.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_3.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_3.png" new file mode 100644 index 00000000..e183f6a3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_3.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_4.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_4.png" new file mode 100644 index 00000000..bc1a490d Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_4.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_5.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_5.png" new file mode 100644 index 00000000..c568d5e8 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_5.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_6.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_6.png" new file mode 100644 index 00000000..e274446e Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_6.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_7.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_7.png" new file mode 100644 index 00000000..f7b9e098 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/99_7.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/make_labels.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/make_labels.py" new file mode 100644 index 00000000..c8146f6d --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/labels/make_labels.py" @@ -0,0 +1,23 @@ +import os +import string +import pipes + +font = 'futura-normal' + +def make_labels(s): + l = string.printable + for word in l: + if word == ' ': + os.system('convert -fill black -background white -bordercolor white -font %s -pointsize %d label:"\ " 32_%d.png'%(font,s,s/12-1)) + if word == '@': + os.system('convert -fill black -background white -bordercolor white -font %s -pointsize %d label:"\@" 64_%d.png'%(font,s,s/12-1)) + elif word == '\\': + os.system('convert -fill black -background white -bordercolor white -font %s -pointsize %d label:"\\\\\\\\" 92_%d.png'%(font,s,s/12-1)) + elif ord(word) in [9,10,11,12,13,14]: + pass + else: + os.system("convert -fill black -background white -bordercolor white -font %s -pointsize %d label:%s \"%d_%d.png\""%(font,s,pipes.quote(word), ord(word),s/12-1)) + +for i in [12,24,36,48,60,72,84,96]: + make_labels(i) + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/openimages.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/openimages.names" new file mode 100644 index 00000000..ddfd8f22 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/openimages.names" @@ -0,0 +1,601 @@ +Tortoise +Container +Magpie +Sea turtle +Football +Ambulance +Ladder +Toothbrush +Syringe +Sink +Toy +Organ +Cassette deck +Apple +Human eye +Cosmetics +Paddle +Snowman +Beer +Chopsticks +Human beard +Bird +Parking meter +Traffic light +Croissant +Cucumber +Radish +Towel +Doll +Skull +Washing machine +Glove +Tick +Belt +Sunglasses +Banjo +Cart +Ball +Backpack +Bicycle +Home appliance +Centipede +Boat +Surfboard +Boot +Headphones +Hot dog +Shorts +Fast food +Bus +Boy +Screwdriver +Bicycle wheel +Barge +Laptop +Miniskirt +Drill +Dress +Bear +Waffle +Pancake +Brown bear +Woodpecker +Blue jay +Pretzel +Bagel +Tower +Teapot +Person +Bow and arrow +Swimwear +Beehive +Brassiere +Bee +Bat +Starfish +Popcorn +Burrito +Chainsaw +Balloon +Wrench +Tent +Vehicle registration plate +Lantern +Toaster +Flashlight +Billboard +Tiara +Limousine +Necklace +Carnivore +Scissors +Stairs +Computer keyboard +Printer +Traffic sign +Chair +Shirt +Poster +Cheese +Sock +Fire hydrant +Land vehicle +Earrings +Tie +Watercraft +Cabinetry +Suitcase +Muffin +Bidet +Snack +Snowmobile +Clock +Medical equipment +Cattle +Cello +Jet ski +Camel +Coat +Suit +Desk +Cat +Bronze sculpture +Juice +Gondola +Beetle +Cannon +Computer mouse +Cookie +Office building +Fountain +Coin +Calculator +Cocktail +Computer monitor +Box +Stapler +Christmas tree +Cowboy hat +Hiking equipment +Studio couch +Drum +Dessert +Wine rack +Drink +Zucchini +Ladle +Human mouth +Dairy +Dice +Oven +Dinosaur +Ratchet +Couch +Cricket ball +Winter melon +Spatula +Whiteboard +Pencil sharpener +Door +Hat +Shower +Eraser +Fedora +Guacamole +Dagger +Scarf +Dolphin +Sombrero +Tin can +Mug +Tap +Harbor seal +Stretcher +Can opener +Goggles +Human body +Roller skates +Coffee cup +Cutting board +Blender +Plumbing fixture +Stop sign +Office supplies +Volleyball +Vase +Slow cooker +Wardrobe +Coffee +Whisk +Paper towel +Personal care +Food +Sun hat +Tree house +Flying disc +Skirt +Gas stove +Salt and pepper shakers +Mechanical fan +Face powder +Fax +Fruit +French fries +Nightstand +Barrel +Kite +Tart +Treadmill +Fox +Flag +Horn +Window blind +Human foot +Golf cart +Jacket +Egg +Street light +Guitar +Pillow +Human leg +Isopod +Grape +Human ear +Power plugs and sockets +Panda +Giraffe +Woman +Door handle +Rhinoceros +Bathtub +Goldfish +Houseplant +Goat +Baseball bat +Baseball glove +Mixing bowl +Marine invertebrates +Kitchen utensil +Light switch +House +Horse +Stationary bicycle +Hammer +Ceiling fan +Sofa bed +Adhesive tape +Harp +Sandal +Bicycle helmet +Saucer +Harpsichord +Human hair +Heater +Harmonica +Hamster +Curtain +Bed +Kettle +Fireplace +Scale +Drinking straw +Insect +Hair dryer +Kitchenware +Indoor rower +Invertebrate +Food processor +Bookcase +Refrigerator +Wood-burning stove +Punching bag +Common fig +Cocktail shaker +Jaguar +Golf ball +Fashion accessory +Alarm clock +Filing cabinet +Artichoke +Table +Tableware +Kangaroo +Koala +Knife +Bottle +Bottle opener +Lynx +Lavender +Lighthouse +Dumbbell +Human head +Bowl +Humidifier +Porch +Lizard +Billiard table +Mammal +Mouse +Motorcycle +Musical instrument +Swim cap +Frying pan +Snowplow +Bathroom cabinet +Missile +Bust +Man +Waffle iron +Milk +Ring binder +Plate +Mobile phone +Baked goods +Mushroom +Crutch +Pitcher +Mirror +Lifejacket +Table tennis racket +Pencil case +Musical keyboard +Scoreboard +Briefcase +Kitchen knife +Nail +Tennis ball +Plastic bag +Oboe +Chest of drawers +Ostrich +Piano +Girl +Plant +Potato +Hair spray +Sports equipment +Pasta +Penguin +Pumpkin +Pear +Infant bed +Polar bear +Mixer +Cupboard +Jacuzzi +Pizza +Digital clock +Pig +Reptile +Rifle +Lipstick +Skateboard +Raven +High heels +Red panda +Rose +Rabbit +Sculpture +Saxophone +Shotgun +Seafood +Submarine sandwich +Snowboard +Sword +Picture frame +Sushi +Loveseat +Ski +Squirrel +Tripod +Stethoscope +Submarine +Scorpion +Segway +Training bench +Snake +Coffee table +Skyscraper +Sheep +Television +Trombone +Tea +Tank +Taco +Telephone +Torch +Tiger +Strawberry +Trumpet +Tree +Tomato +Train +Tool +Picnic basket +Cooking spray +Trousers +Bowling equipment +Football helmet +Truck +Measuring cup +Coffeemaker +Violin +Vehicle +Handbag +Paper cutter +Wine +Weapon +Wheel +Worm +Wok +Whale +Zebra +Auto part +Jug +Pizza cutter +Cream +Monkey +Lion +Bread +Platter +Chicken +Eagle +Helicopter +Owl +Duck +Turtle +Hippopotamus +Crocodile +Toilet +Toilet paper +Squid +Clothing +Footwear +Lemon +Spider +Deer +Frog +Banana +Rocket +Wine glass +Countertop +Tablet computer +Waste container +Swimming pool +Dog +Book +Elephant +Shark +Candle +Leopard +Axe +Hand dryer +Soap dispenser +Porcupine +Flower +Canary +Cheetah +Palm tree +Hamburger +Maple +Building +Fish +Lobster +Asparagus +Furniture +Hedgehog +Airplane +Spoon +Otter +Bull +Oyster +Horizontal bar +Convenience store +Bomb +Bench +Ice cream +Caterpillar +Butterfly +Parachute +Orange +Antelope +Beaker +Moths and butterflies +Window +Closet +Castle +Jellyfish +Goose +Mule +Swan +Peach +Coconut +Seat belt +Raccoon +Chisel +Fork +Lamp +Camera +Squash +Racket +Human face +Human arm +Vegetable +Diaper +Unicycle +Falcon +Chime +Snail +Shellfish +Cabbage +Carrot +Mango +Jeans +Flowerpot +Pineapple +Drawer +Stool +Envelope +Cake +Dragonfly +Sunflower +Microwave oven +Honeycomb +Marine mammal +Sea lion +Ladybug +Shelf +Watch +Candy +Salad +Parrot +Handgun +Sparrow +Van +Grinder +Spice rack +Light bulb +Corded phone +Sports uniform +Tennis racket +Wall clock +Serving tray +Kitchen & dining room table +Dog bed +Cake stand +Cat furniture +Bathroom accessory +Facial tissue holder +Pressure cooker +Kitchen appliance +Tire +Ruler +Luggage and bags +Microphone +Broccoli +Umbrella +Pastry +Grapefruit +Band-aid +Animal +Bell pepper +Turkey +Lily +Pomegranate +Doughnut +Glasses +Human nose +Pen +Ant +Car +Aircraft +Human hand +Skunk +Teddy bear +Watermelon +Cantaloupe +Dishwasher +Flute +Balance beam +Sandwich +Shrimp +Sewing machine +Binoculars +Rays and skates +Ipod +Accordion +Willow +Crab +Crown +Seahorse +Perfume +Alpaca +Taxi +Canoe +Remote control +Wheelchair +Rugby ball +Armadillo +Maracas +Helmet diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/person.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/person.jpg" new file mode 100644 index 00000000..61d377ff Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/person.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/scream.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/scream.jpg" new file mode 100644 index 00000000..43f2c36a Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/scream.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/voc.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/voc.names" new file mode 100644 index 00000000..8420ab35 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/data/voc.names" @@ -0,0 +1,20 @@ +aeroplane +bicycle +bird +boat +bottle +bus +car +cat +chair +cow +diningtable +dog +horse +motorbike +person +pottedplant +sheep +sofa +train +tvmonitor diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/dummy/m.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/dummy/m.jpg" new file mode 100644 index 00000000..0dd32ffc Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/dummy/m.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/art.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/art.c" new file mode 100644 index 00000000..932688e7 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/art.c" @@ -0,0 +1,59 @@ +#include "darknet.h" + +#include + +void demo_art(char *cfgfile, char *weightfile, int cam_index) +{ +#ifdef OPENCV + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + + srand(2222222); + + void * cap = open_video_stream(0, cam_index, 0,0,0); + + char *window = "ArtJudgementBot9000!!!"; + if(!cap) error("Couldn't connect to webcam.\n"); + int i; + int idx[] = {37, 401, 434}; + int n = sizeof(idx)/sizeof(idx[0]); + + while(1){ + image in = get_image_from_stream(cap); + image in_s = resize_image(in, net->w, net->h); + + float *p = network_predict(net, in_s.data); + + printf("\033[2J"); + printf("\033[1;1H"); + + float score = 0; + for(i = 0; i < n; ++i){ + float s = p[idx[i]]; + if (s > score) score = s; + } + score = score; + printf("I APPRECIATE THIS ARTWORK: %10.7f%%\n", score*100); + printf("["); + int upper = 30; + for(i = 0; i < upper; ++i){ + printf("%c", ((i+.5) < score*upper) ? 219 : ' '); + } + printf("]\n"); + + show_image(in, window, 1); + free_image(in_s); + free_image(in); + } +#endif +} + + +void run_art(int argc, char **argv) +{ + int cam_index = find_int_arg(argc, argv, "-c", 0); + char *cfg = argv[2]; + char *weights = argv[3]; + demo_art(cfg, weights, cam_index); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/attention.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/attention.c" new file mode 100644 index 00000000..cd1e579d --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/attention.c" @@ -0,0 +1,459 @@ +#include "darknet.h" + +#include +#include + +void extend_data_truth(data *d, int n, float val) +{ + int i, j; + for(i = 0; i < d->y.rows; ++i){ + d->y.vals[i] = realloc(d->y.vals[i], (d->y.cols+n)*sizeof(float)); + for(j = 0; j < n; ++j){ + d->y.vals[i][d->y.cols + j] = val; + } + } + d->y.cols += n; +} + +matrix network_loss_data(network *net, data test) +{ + int i,b; + int k = 1; + matrix pred = make_matrix(test.X.rows, k); + float *X = calloc(net->batch*test.X.cols, sizeof(float)); + float *y = calloc(net->batch*test.y.cols, sizeof(float)); + for(i = 0; i < test.X.rows; i += net->batch){ + for(b = 0; b < net->batch; ++b){ + if(i+b == test.X.rows) break; + memcpy(X+b*test.X.cols, test.X.vals[i+b], test.X.cols*sizeof(float)); + memcpy(y+b*test.y.cols, test.y.vals[i+b], test.y.cols*sizeof(float)); + } + + network orig = *net; + net->input = X; + net->truth = y; + net->train = 0; + net->delta = 0; + forward_network(net); + *net = orig; + + float *delta = net->layers[net->n-1].output; + for(b = 0; b < net->batch; ++b){ + if(i+b == test.X.rows) break; + int t = max_index(y + b*test.y.cols, 1000); + float err = sum_array(delta + b*net->outputs, net->outputs); + pred.vals[i+b][0] = -err; + //pred.vals[i+b][0] = 1-delta[b*net->outputs + t]; + } + } + free(X); + free(y); + return pred; +} + +void train_attention(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear) +{ + int i, j; + + float avg_cls_loss = -1; + float avg_att_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + printf("%d\n", ngpus); + network **nets = calloc(ngpus, sizeof(network*)); + + srand(time(0)); + int seed = rand(); + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + srand(time(0)); + network *net = nets[0]; + + int imgs = net->batch * net->subdivisions * ngpus; + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + list *options = read_data_cfg(datacfg); + + char *backup_directory = option_find_str(options, "backup", "/backup/"); + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *train_list = option_find_str(options, "train", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + + char **labels = get_labels(label_list); + list *plist = get_paths(train_list); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + int N = plist->size; + double time; + + int divs=3; + int size=2; + + load_args args = {0}; + args.w = divs*net->w/size; + args.h = divs*net->h/size; + args.size = divs*net->w/size; + args.threads = 32; + args.hierarchy = net->hierarchy; + + args.min = net->min_ratio*args.w; + args.max = net->max_ratio*args.w; + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + + args.paths = paths; + args.classes = classes; + args.n = imgs; + args.m = N; + args.labels = labels; + args.type = CLASSIFICATION_DATA; + + data train; + data buffer; + pthread_t load_thread; + args.d = &buffer; + load_thread = load_data(args); + + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + time = what_time_is_it_now(); + + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data(args); + data resized = resize_data(train, net->w, net->h); + extend_data_truth(&resized, divs*divs, 0); + data *tiles = tile_data(train, divs, size); + + printf("Loaded: %lf seconds\n", what_time_is_it_now()-time); + time = what_time_is_it_now(); + + float aloss = 0; + float closs = 0; + int z; + for (i = 0; i < divs*divs/ngpus; ++i) { +#pragma omp parallel for + for(j = 0; j < ngpus; ++j){ + int index = i*ngpus + j; + extend_data_truth(tiles+index, divs*divs, SECRET_NUM); + matrix deltas = network_loss_data(nets[j], tiles[index]); + for(z = 0; z < resized.y.rows; ++z){ + resized.y.vals[z][train.y.cols + index] = deltas.vals[z][0]; + } + free_matrix(deltas); + } + } + int *inds = calloc(resized.y.rows, sizeof(int)); + for(z = 0; z < resized.y.rows; ++z){ + int index = max_index(resized.y.vals[z] + train.y.cols, divs*divs); + inds[z] = index; + for(i = 0; i < divs*divs; ++i){ + resized.y.vals[z][train.y.cols + i] = (i == index)? 1 : 0; + } + } + data best = select_data(tiles, inds); + free(inds); + #ifdef GPU + if (ngpus == 1) { + closs = train_network(net, best); + } else { + closs = train_networks(nets, ngpus, best, 4); + } + #endif + for (i = 0; i < divs*divs; ++i) { + printf("%.2f ", resized.y.vals[0][train.y.cols + i]); + if((i+1)%divs == 0) printf("\n"); + free_data(tiles[i]); + } + free_data(best); + printf("\n"); + image im = float_to_image(64,64,3,resized.X.vals[0]); + //show_image(im, "orig"); + //cvWaitKey(100); + /* + image im1 = float_to_image(64,64,3,tiles[i].X.vals[0]); + image im2 = float_to_image(64,64,3,resized.X.vals[0]); + show_image(im1, "tile"); + show_image(im2, "res"); + */ +#ifdef GPU + if (ngpus == 1) { + aloss = train_network(net, resized); + } else { + aloss = train_networks(nets, ngpus, resized, 4); + } +#endif + for(i = 0; i < divs*divs; ++i){ + printf("%f ", nets[0]->output[1000 + i]); + if ((i+1) % divs == 0) printf("\n"); + } + printf("\n"); + + free_data(resized); + free_data(train); + if(avg_cls_loss == -1) avg_cls_loss = closs; + if(avg_att_loss == -1) avg_att_loss = aloss; + avg_cls_loss = avg_cls_loss*.9 + closs*.1; + avg_att_loss = avg_att_loss*.9 + aloss*.1; + + printf("%ld, %.3f: Att: %f, %f avg, Class: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, aloss, avg_att_loss, closs, avg_cls_loss, get_current_rate(net), what_time_is_it_now()-time, *net->seen); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%1000 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + pthread_join(load_thread, 0); + + free_network(net); + free_ptrs((void**)labels, classes); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void validate_attention_single(char *datacfg, char *filename, char *weightfile) +{ + int i, j; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *leaf_list = option_find_str(options, "leaves", 0); + if(leaf_list) change_leaves(net->hierarchy, leaf_list); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + float avg_acc = 0; + float avg_topk = 0; + int *indexes = calloc(topk, sizeof(int)); + int divs = 4; + int size = 2; + int extra = 0; + float *avgs = calloc(classes, sizeof(float)); + int *inds = calloc(divs*divs, sizeof(int)); + + for(i = 0; i < m; ++i){ + int class = -1; + char *path = paths[i]; + for(j = 0; j < classes; ++j){ + if(strstr(path, labels[j])){ + class = j; + break; + } + } + image im = load_image_color(paths[i], 0, 0); + image resized = resize_min(im, net->w*divs/size); + image crop = crop_image(resized, (resized.w - net->w*divs/size)/2, (resized.h - net->h*divs/size)/2, net->w*divs/size, net->h*divs/size); + image rcrop = resize_image(crop, net->w, net->h); + //show_image(im, "orig"); + //show_image(crop, "cropped"); + //cvWaitKey(0); + float *pred = network_predict(net, rcrop.data); + //pred[classes + 56] = 0; + for(j = 0; j < divs*divs; ++j){ + printf("%.2f ", pred[classes + j]); + if((j+1)%divs == 0) printf("\n"); + } + printf("\n"); + copy_cpu(classes, pred, 1, avgs, 1); + top_k(pred + classes, divs*divs, divs*divs, inds); + show_image(crop, "crop"); + for(j = 0; j < extra; ++j){ + int index = inds[j]; + int row = index / divs; + int col = index % divs; + int y = row * crop.h / divs - (net->h - crop.h/divs)/2; + int x = col * crop.w / divs - (net->w - crop.w/divs)/2; + printf("%d %d %d %d\n", row, col, y, x); + image tile = crop_image(crop, x, y, net->w, net->h); + float *pred = network_predict(net, tile.data); + axpy_cpu(classes, 1., pred, 1, avgs, 1); + show_image(tile, "tile"); + //cvWaitKey(10); + } + if(net->hierarchy) hierarchy_predictions(pred, net->outputs, net->hierarchy, 1, 1); + + if(rcrop.data != resized.data) free_image(rcrop); + if(resized.data != im.data) free_image(resized); + free_image(im); + free_image(crop); + top_k(pred, classes, topk, indexes); + + if(indexes[0] == class) avg_acc += 1; + for(j = 0; j < topk; ++j){ + if(indexes[j] == class) avg_topk += 1; + } + + printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1)); + } +} + +void validate_attention_multi(char *datacfg, char *filename, char *weightfile) +{ + int i, j; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + int scales[] = {224, 288, 320, 352, 384}; + int nscales = sizeof(scales)/sizeof(scales[0]); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + float avg_acc = 0; + float avg_topk = 0; + int *indexes = calloc(topk, sizeof(int)); + + for(i = 0; i < m; ++i){ + int class = -1; + char *path = paths[i]; + for(j = 0; j < classes; ++j){ + if(strstr(path, labels[j])){ + class = j; + break; + } + } + float *pred = calloc(classes, sizeof(float)); + image im = load_image_color(paths[i], 0, 0); + for(j = 0; j < nscales; ++j){ + image r = resize_min(im, scales[j]); + resize_network(net, r.w, r.h); + float *p = network_predict(net, r.data); + if(net->hierarchy) hierarchy_predictions(p, net->outputs, net->hierarchy, 1 , 1); + axpy_cpu(classes, 1, p, 1, pred, 1); + flip_image(r); + p = network_predict(net, r.data); + axpy_cpu(classes, 1, p, 1, pred, 1); + if(r.data != im.data) free_image(r); + } + free_image(im); + top_k(pred, classes, topk, indexes); + free(pred); + if(indexes[0] == class) avg_acc += 1; + for(j = 0; j < topk; ++j){ + if(indexes[j] == class) avg_topk += 1; + } + + printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1)); + } +} + +void predict_attention(char *datacfg, char *cfgfile, char *weightfile, char *filename, int top) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + list *options = read_data_cfg(datacfg); + + char *name_list = option_find_str(options, "names", 0); + if(!name_list) name_list = option_find_str(options, "labels", "data/labels.list"); + if(top == 0) top = option_find_int(options, "top", 1); + + int i = 0; + char **names = get_labels(name_list); + clock_t time; + int *indexes = calloc(top, sizeof(int)); + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image r = letterbox_image(im, net->w, net->h); + //resize_network(&net, r.w, r.h); + //printf("%d %d\n", r.w, r.h); + + float *X = r.data; + time=clock(); + float *predictions = network_predict(net, X); + if(net->hierarchy) hierarchy_predictions(predictions, net->outputs, net->hierarchy, 1, 1); + top_k(predictions, net->outputs, top, indexes); + fprintf(stderr, "%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + for(i = 0; i < top; ++i){ + int index = indexes[i]; + //if(net->hierarchy) printf("%d, %s: %f, parent: %s \n",index, names[index], predictions[index], (net->hierarchy->parent[index] >= 0) ? names[net->hierarchy->parent[index]] : "Root"); + //else printf("%s: %f\n",names[index], predictions[index]); + printf("%5.2f%%: %s\n", predictions[index]*100, names[index]); + } + if(r.data != im.data) free_image(r); + free_image(im); + if (filename) break; + } +} + + +void run_attention(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + int ngpus; + int *gpus = read_intlist(gpu_list, &ngpus, gpu_index); + + + int top = find_int_arg(argc, argv, "-t", 0); + int clear = find_arg(argc, argv, "-clear"); + char *data = argv[3]; + char *cfg = argv[4]; + char *weights = (argc > 5) ? argv[5] : 0; + char *filename = (argc > 6) ? argv[6]: 0; + char *layer_s = (argc > 7) ? argv[7]: 0; + if(0==strcmp(argv[2], "predict")) predict_attention(data, cfg, weights, filename, top); + else if(0==strcmp(argv[2], "train")) train_attention(data, cfg, weights, gpus, ngpus, clear); + else if(0==strcmp(argv[2], "valid")) validate_attention_single(data, cfg, weights); + else if(0==strcmp(argv[2], "validmulti")) validate_attention_multi(data, cfg, weights); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/captcha.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/captcha.c" new file mode 100644 index 00000000..41d6d07c --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/captcha.c" @@ -0,0 +1,353 @@ +#include "darknet.h" + +void fix_data_captcha(data d, int mask) +{ + matrix labels = d.y; + int i, j; + for(i = 0; i < d.y.rows; ++i){ + for(j = 0; j < d.y.cols; j += 2){ + if (mask){ + if(!labels.vals[i][j]){ + labels.vals[i][j] = SECRET_NUM; + labels.vals[i][j+1] = SECRET_NUM; + }else if(labels.vals[i][j+1]){ + labels.vals[i][j] = 0; + } + } else{ + if (labels.vals[i][j]) { + labels.vals[i][j+1] = 0; + } else { + labels.vals[i][j+1] = 1; + } + } + } + } +} + +void train_captcha(char *cfgfile, char *weightfile) +{ + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + network *net = load_network(cfgfile, weightfile, 0); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = 1024; + int i = *net->seen/imgs; + int solved = 1; + list *plist; + char **labels = get_labels("/data/captcha/reimgs.labels.list"); + if (solved){ + plist = get_paths("/data/captcha/reimgs.solved.list"); + }else{ + plist = get_paths("/data/captcha/reimgs.raw.list"); + } + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + clock_t time; + pthread_t load_thread; + data train; + data buffer; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.paths = paths; + args.classes = 26; + args.n = imgs; + args.m = plist->size; + args.labels = labels; + args.d = &buffer; + args.type = CLASSIFICATION_DATA; + + load_thread = load_data_in_thread(args); + while(1){ + ++i; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + fix_data_captcha(train, solved); + + /* + image im = float_to_image(256, 256, 3, train.X.vals[114]); + show_image(im, "training"); + cvWaitKey(0); + */ + + load_thread = load_data_in_thread(args); + printf("Loaded: %lf seconds\n", sec(clock()-time)); + time=clock(); + float loss = train_network(net, train); + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%d: %f, %f avg, %lf seconds, %ld images\n", i, loss, avg_loss, sec(clock()-time), *net->seen); + free_data(train); + if(i%100==0){ + char buff[256]; + sprintf(buff, "/home/pjreddie/imagenet_backup/%s_%d.weights",base, i); + save_weights(net, buff); + } + } +} + +void test_captcha(char *cfgfile, char *weightfile, char *filename) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + int i = 0; + char **names = get_labels("/data/captcha/reimgs.labels.list"); + char buff[256]; + char *input = buff; + int indexes[26]; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + //printf("Enter Image Path: "); + //fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, net->w, net->h); + float *X = im.data; + float *predictions = network_predict(net, X); + top_predictions(net, 26, indexes); + //printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + for(i = 0; i < 26; ++i){ + int index = indexes[i]; + if(i != 0) printf(", "); + printf("%s %f", names[index], predictions[index]); + } + printf("\n"); + fflush(stdout); + free_image(im); + if (filename) break; + } +} + +void valid_captcha(char *cfgfile, char *weightfile, char *filename) +{ + char **labels = get_labels("/data/captcha/reimgs.labels.list"); + network *net = load_network(cfgfile, weightfile, 0); + list *plist = get_paths("/data/captcha/reimgs.fg.list"); + char **paths = (char **)list_to_array(plist); + int N = plist->size; + int outputs = net->outputs; + + set_batch_network(net, 1); + srand(2222222); + int i, j; + for(i = 0; i < N; ++i){ + if (i%100 == 0) fprintf(stderr, "%d\n", i); + image im = load_image_color(paths[i], net->w, net->h); + float *X = im.data; + float *predictions = network_predict(net, X); + //printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + int truth = -1; + for(j = 0; j < 13; ++j){ + if (strstr(paths[i], labels[j])) truth = j; + } + if (truth == -1){ + fprintf(stderr, "bad: %s\n", paths[i]); + return; + } + printf("%d, ", truth); + for(j = 0; j < outputs; ++j){ + if (j != 0) printf(", "); + printf("%f", predictions[j]); + } + printf("\n"); + fflush(stdout); + free_image(im); + if (filename) break; + } +} + +/* + void train_captcha(char *cfgfile, char *weightfile) + { + float avg_loss = -1; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = 1024; + int i = net->seen/imgs; + list *plist = get_paths("/data/captcha/train.auto5"); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + clock_t time; + while(1){ + ++i; + time=clock(); + data train = load_data_captcha(paths, imgs, plist->size, 10, 200, 60); + translate_data_rows(train, -128); + scale_data_rows(train, 1./128); + printf("Loaded: %lf seconds\n", sec(clock()-time)); + time=clock(); + float loss = train_network(net, train); + net->seen += imgs; + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%d: %f, %f avg, %lf seconds, %d images\n", i, loss, avg_loss, sec(clock()-time), net->seen); + free_data(train); + if(i%10==0){ + char buff[256]; + sprintf(buff, "/home/pjreddie/imagenet_backup/%s_%d.weights",base, i); + save_weights(net, buff); + } + } + } + + void decode_captcha(char *cfgfile, char *weightfile) + { + setbuf(stdout, NULL); + srand(time(0)); + network net = parse_network_cfg(cfgfile); + set_batch_network(&net, 1); + if(weightfile){ + load_weights(&net, weightfile); + } + char filename[256]; + while(1){ + printf("Enter filename: "); + fgets(filename, 256, stdin); + strtok(filename, "\n"); + image im = load_image_color(filename, 300, 57); + scale_image(im, 1./255.); + float *X = im.data; + float *predictions = network_predict(net, X); + image out = float_to_image(300, 57, 1, predictions); + show_image(out, "decoded"); +#ifdef OPENCV +cvWaitKey(0); +#endif +free_image(im); +} +} + +void encode_captcha(char *cfgfile, char *weightfile) +{ +float avg_loss = -1; +srand(time(0)); +char *base = basecfg(cfgfile); +printf("%s\n", base); +network net = parse_network_cfg(cfgfile); +if(weightfile){ + load_weights(&net, weightfile); +} +printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); +int imgs = 1024; +int i = net->seen/imgs; +list *plist = get_paths("/data/captcha/encode.list"); +char **paths = (char **)list_to_array(plist); +printf("%d\n", plist->size); +clock_t time; +while(1){ + ++i; + time=clock(); + data train = load_data_captcha_encode(paths, imgs, plist->size, 300, 57); + scale_data_rows(train, 1./255); + printf("Loaded: %lf seconds\n", sec(clock()-time)); + time=clock(); + float loss = train_network(net, train); + net->seen += imgs; + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%d: %f, %f avg, %lf seconds, %d images\n", i, loss, avg_loss, sec(clock()-time), net->seen); + free_matrix(train.X); + if(i%100==0){ + char buff[256]; + sprintf(buff, "/home/pjreddie/imagenet_backup/%s_%d.weights",base, i); + save_weights(net, buff); + } +} +} + +void validate_captcha(char *cfgfile, char *weightfile) +{ + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + int numchars = 37; + list *plist = get_paths("/data/captcha/solved.hard"); + char **paths = (char **)list_to_array(plist); + int imgs = plist->size; + data valid = load_data_captcha(paths, imgs, 0, 10, 200, 60); + translate_data_rows(valid, -128); + scale_data_rows(valid, 1./128); + matrix pred = network_predict_data(net, valid); + int i, k; + int correct = 0; + int total = 0; + int accuracy = 0; + for(i = 0; i < imgs; ++i){ + int allcorrect = 1; + for(k = 0; k < 10; ++k){ + char truth = int_to_alphanum(max_index(valid.y.vals[i]+k*numchars, numchars)); + char prediction = int_to_alphanum(max_index(pred.vals[i]+k*numchars, numchars)); + if (truth != prediction) allcorrect=0; + if (truth != '.' && truth == prediction) ++correct; + if (truth != '.' || truth != prediction) ++total; + } + accuracy += allcorrect; + } + printf("Word Accuracy: %f, Char Accuracy %f\n", (float)accuracy/imgs, (float)correct/total); + free_data(valid); +} + +void test_captcha(char *cfgfile, char *weightfile) +{ + setbuf(stdout, NULL); + srand(time(0)); + //char *base = basecfg(cfgfile); + //printf("%s\n", base); + network net = parse_network_cfg(cfgfile); + set_batch_network(&net, 1); + if(weightfile){ + load_weights(&net, weightfile); + } + char filename[256]; + while(1){ + //printf("Enter filename: "); + fgets(filename, 256, stdin); + strtok(filename, "\n"); + image im = load_image_color(filename, 200, 60); + translate_image(im, -128); + scale_image(im, 1/128.); + float *X = im.data; + float *predictions = network_predict(net, X); + print_letters(predictions, 10); + free_image(im); + } +} + */ +void run_captcha(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5]: 0; + if(0==strcmp(argv[2], "train")) train_captcha(cfg, weights); + else if(0==strcmp(argv[2], "test")) test_captcha(cfg, weights, filename); + else if(0==strcmp(argv[2], "valid")) valid_captcha(cfg, weights, filename); + //if(0==strcmp(argv[2], "test")) test_captcha(cfg, weights); + //else if(0==strcmp(argv[2], "encode")) encode_captcha(cfg, weights); + //else if(0==strcmp(argv[2], "decode")) decode_captcha(cfg, weights); + //else if(0==strcmp(argv[2], "valid")) validate_captcha(cfg, weights); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/cifar.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/cifar.c" new file mode 100644 index 00000000..a5f5f240 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/cifar.c" @@ -0,0 +1,251 @@ +#include "darknet.h" + +void train_cifar(char *cfgfile, char *weightfile) +{ + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + network *net = load_network(cfgfile, weightfile, 0); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + + char *backup_directory = "/home/pjreddie/backup/"; + int classes = 10; + int N = 50000; + + char **labels = get_labels("data/cifar/labels.txt"); + int epoch = (*net->seen)/N; + data train = load_all_cifar10(); + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + clock_t time=clock(); + + float loss = train_network_sgd(net, train, 1); + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.95 + loss*.05; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), sec(clock()-time), *net->seen); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + free_network(net); + free_ptrs((void**)labels, classes); + free(base); + free_data(train); +} + +void train_cifar_distill(char *cfgfile, char *weightfile) +{ + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + network *net = load_network(cfgfile, weightfile, 0); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + + char *backup_directory = "/home/pjreddie/backup/"; + int classes = 10; + int N = 50000; + + char **labels = get_labels("data/cifar/labels.txt"); + int epoch = (*net->seen)/N; + + data train = load_all_cifar10(); + matrix soft = csv_to_matrix("results/ensemble.csv"); + + float weight = .9; + scale_matrix(soft, weight); + scale_matrix(train.y, 1. - weight); + matrix_add_matrix(soft, train.y); + + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + clock_t time=clock(); + + float loss = train_network_sgd(net, train, 1); + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.95 + loss*.05; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), sec(clock()-time), *net->seen); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + free_network(net); + free_ptrs((void**)labels, classes); + free(base); + free_data(train); +} + +void test_cifar_multi(char *filename, char *weightfile) +{ + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + float avg_acc = 0; + data test = load_cifar10_data("data/cifar/cifar-10-batches-bin/test_batch.bin"); + + int i; + for(i = 0; i < test.X.rows; ++i){ + image im = float_to_image(32, 32, 3, test.X.vals[i]); + + float pred[10] = {0}; + + float *p = network_predict(net, im.data); + axpy_cpu(10, 1, p, 1, pred, 1); + flip_image(im); + p = network_predict(net, im.data); + axpy_cpu(10, 1, p, 1, pred, 1); + + int index = max_index(pred, 10); + int class = max_index(test.y.vals[i], 10); + if(index == class) avg_acc += 1; + free_image(im); + printf("%4d: %.2f%%\n", i, 100.*avg_acc/(i+1)); + } +} + +void test_cifar(char *filename, char *weightfile) +{ + network *net = load_network(filename, weightfile, 0); + srand(time(0)); + + clock_t time; + float avg_acc = 0; + float avg_top5 = 0; + data test = load_cifar10_data("data/cifar/cifar-10-batches-bin/test_batch.bin"); + + time=clock(); + + float *acc = network_accuracies(net, test, 2); + avg_acc += acc[0]; + avg_top5 += acc[1]; + printf("top1: %f, %lf seconds, %d images\n", avg_acc, sec(clock()-time), test.X.rows); + free_data(test); +} + +void extract_cifar() +{ +char *labels[] = {"airplane","automobile","bird","cat","deer","dog","frog","horse","ship","truck"}; + int i; + data train = load_all_cifar10(); + data test = load_cifar10_data("data/cifar/cifar-10-batches-bin/test_batch.bin"); + for(i = 0; i < train.X.rows; ++i){ + image im = float_to_image(32, 32, 3, train.X.vals[i]); + int class = max_index(train.y.vals[i], 10); + char buff[256]; + sprintf(buff, "data/cifar/train/%d_%s",i,labels[class]); + save_image_options(im, buff, PNG, 0); + } + for(i = 0; i < test.X.rows; ++i){ + image im = float_to_image(32, 32, 3, test.X.vals[i]); + int class = max_index(test.y.vals[i], 10); + char buff[256]; + sprintf(buff, "data/cifar/test/%d_%s",i,labels[class]); + save_image_options(im, buff, PNG, 0); + } +} + +void test_cifar_csv(char *filename, char *weightfile) +{ + network *net = load_network(filename, weightfile, 0); + srand(time(0)); + + data test = load_cifar10_data("data/cifar/cifar-10-batches-bin/test_batch.bin"); + + matrix pred = network_predict_data(net, test); + + int i; + for(i = 0; i < test.X.rows; ++i){ + image im = float_to_image(32, 32, 3, test.X.vals[i]); + flip_image(im); + } + matrix pred2 = network_predict_data(net, test); + scale_matrix(pred, .5); + scale_matrix(pred2, .5); + matrix_add_matrix(pred2, pred); + + matrix_to_csv(pred); + fprintf(stderr, "Accuracy: %f\n", matrix_topk_accuracy(test.y, pred, 1)); + free_data(test); +} + +void test_cifar_csvtrain(char *cfg, char *weights) +{ + network *net = load_network(cfg, weights, 0); + srand(time(0)); + + data test = load_all_cifar10(); + + matrix pred = network_predict_data(net, test); + + int i; + for(i = 0; i < test.X.rows; ++i){ + image im = float_to_image(32, 32, 3, test.X.vals[i]); + flip_image(im); + } + matrix pred2 = network_predict_data(net, test); + scale_matrix(pred, .5); + scale_matrix(pred2, .5); + matrix_add_matrix(pred2, pred); + + matrix_to_csv(pred); + fprintf(stderr, "Accuracy: %f\n", matrix_topk_accuracy(test.y, pred, 1)); + free_data(test); +} + +void eval_cifar_csv() +{ + data test = load_cifar10_data("data/cifar/cifar-10-batches-bin/test_batch.bin"); + + matrix pred = csv_to_matrix("results/combined.csv"); + fprintf(stderr, "%d %d\n", pred.rows, pred.cols); + + fprintf(stderr, "Accuracy: %f\n", matrix_topk_accuracy(test.y, pred, 1)); + free_data(test); + free_matrix(pred); +} + + +void run_cifar(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + if(0==strcmp(argv[2], "train")) train_cifar(cfg, weights); + else if(0==strcmp(argv[2], "extract")) extract_cifar(); + else if(0==strcmp(argv[2], "distill")) train_cifar_distill(cfg, weights); + else if(0==strcmp(argv[2], "test")) test_cifar(cfg, weights); + else if(0==strcmp(argv[2], "multi")) test_cifar_multi(cfg, weights); + else if(0==strcmp(argv[2], "csv")) test_cifar_csv(cfg, weights); + else if(0==strcmp(argv[2], "csvtrain")) test_cifar_csvtrain(cfg, weights); + else if(0==strcmp(argv[2], "eval")) eval_cifar_csv(); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/classifier.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/classifier.c" new file mode 100644 index 00000000..df91a084 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/classifier.c" @@ -0,0 +1,1098 @@ +#include "darknet.h" + +#include +#include + +float *get_regression_values(char **labels, int n) +{ + float *v = calloc(n, sizeof(float)); + int i; + for(i = 0; i < n; ++i){ + char *p = strchr(labels[i], ' '); + *p = 0; + v[i] = atof(p+1); + } + return v; +} + +void train_classifier(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear) +{ + int i; + + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + printf("%d\n", ngpus); + network **nets = calloc(ngpus, sizeof(network*)); + + srand(time(0)); + int seed = rand(); + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + srand(time(0)); + network *net = nets[0]; + + int imgs = net->batch * net->subdivisions * ngpus; + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + list *options = read_data_cfg(datacfg); + + char *backup_directory = option_find_str(options, "backup", "/backup/"); + int tag = option_find_int_quiet(options, "tag", 0); + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *train_list = option_find_str(options, "train", "data/train.list"); + char *tree = option_find_str(options, "tree", 0); + if (tree) net->hierarchy = read_tree(tree); + int classes = option_find_int(options, "classes", 2); + + char **labels = 0; + if(!tag){ + labels = get_labels(label_list); + } + list *plist = get_paths(train_list); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + int N = plist->size; + double time; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.threads = 32; + args.hierarchy = net->hierarchy; + + args.min = net->min_ratio*net->w; + args.max = net->max_ratio*net->w; + printf("%d %d\n", args.min, args.max); + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + args.size = net->w; + + args.paths = paths; + args.classes = classes; + args.n = imgs; + args.m = N; + args.labels = labels; + if (tag){ + args.type = TAG_DATA; + } else { + args.type = CLASSIFICATION_DATA; + } + + data train; + data buffer; + pthread_t load_thread; + args.d = &buffer; + load_thread = load_data(args); + + int count = 0; + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + if(net->random && count++%40 == 0){ + printf("Resizing\n"); + int dim = (rand() % 11 + 4) * 32; + //if (get_current_batch(net)+200 > net->max_batches) dim = 608; + //int dim = (rand() % 4 + 16) * 32; + printf("%d\n", dim); + args.w = dim; + args.h = dim; + args.size = dim; + args.min = net->min_ratio*dim; + args.max = net->max_ratio*dim; + printf("%d %d\n", args.min, args.max); + + pthread_join(load_thread, 0); + train = buffer; + free_data(train); + load_thread = load_data(args); + + for(i = 0; i < ngpus; ++i){ + resize_network(nets[i], dim, dim); + } + net = nets[0]; + } + time = what_time_is_it_now(); + + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data(args); + + printf("Loaded: %lf seconds\n", what_time_is_it_now()-time); + time = what_time_is_it_now(); + + float loss = 0; +#ifdef GPU + if(ngpus == 1){ + loss = train_network(net, train); + } else { + loss = train_networks(nets, ngpus, train, 4); + } +#else + loss = train_network(net, train); +#endif + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), what_time_is_it_now()-time, *net->seen); + free_data(train); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%1000 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + pthread_join(load_thread, 0); + + free_network(net); + if(labels) free_ptrs((void**)labels, classes); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void validate_classifier_crop(char *datacfg, char *filename, char *weightfile) +{ + int i = 0; + network *net = load_network(filename, weightfile, 0); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + clock_t time; + float avg_acc = 0; + float avg_topk = 0; + int splits = m/1000; + int num = (i+1)*m/splits - i*m/splits; + + data val, buffer; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + + args.paths = paths; + args.classes = classes; + args.n = num; + args.m = 0; + args.labels = labels; + args.d = &buffer; + args.type = OLD_CLASSIFICATION_DATA; + + pthread_t load_thread = load_data_in_thread(args); + for(i = 1; i <= splits; ++i){ + time=clock(); + + pthread_join(load_thread, 0); + val = buffer; + + num = (i+1)*m/splits - i*m/splits; + char **part = paths+(i*m/splits); + if(i != splits){ + args.paths = part; + load_thread = load_data_in_thread(args); + } + printf("Loaded: %d images in %lf seconds\n", val.X.rows, sec(clock()-time)); + + time=clock(); + float *acc = network_accuracies(net, val, topk); + avg_acc += acc[0]; + avg_topk += acc[1]; + printf("%d: top 1: %f, top %d: %f, %lf seconds, %d images\n", i, avg_acc/i, topk, avg_topk/i, sec(clock()-time), val.X.rows); + free_data(val); + } +} + +void validate_classifier_10(char *datacfg, char *filename, char *weightfile) +{ + int i, j; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + float avg_acc = 0; + float avg_topk = 0; + int *indexes = calloc(topk, sizeof(int)); + + for(i = 0; i < m; ++i){ + int class = -1; + char *path = paths[i]; + for(j = 0; j < classes; ++j){ + if(strstr(path, labels[j])){ + class = j; + break; + } + } + int w = net->w; + int h = net->h; + int shift = 32; + image im = load_image_color(paths[i], w+shift, h+shift); + image images[10]; + images[0] = crop_image(im, -shift, -shift, w, h); + images[1] = crop_image(im, shift, -shift, w, h); + images[2] = crop_image(im, 0, 0, w, h); + images[3] = crop_image(im, -shift, shift, w, h); + images[4] = crop_image(im, shift, shift, w, h); + flip_image(im); + images[5] = crop_image(im, -shift, -shift, w, h); + images[6] = crop_image(im, shift, -shift, w, h); + images[7] = crop_image(im, 0, 0, w, h); + images[8] = crop_image(im, -shift, shift, w, h); + images[9] = crop_image(im, shift, shift, w, h); + float *pred = calloc(classes, sizeof(float)); + for(j = 0; j < 10; ++j){ + float *p = network_predict(net, images[j].data); + if(net->hierarchy) hierarchy_predictions(p, net->outputs, net->hierarchy, 1, 1); + axpy_cpu(classes, 1, p, 1, pred, 1); + free_image(images[j]); + } + free_image(im); + top_k(pred, classes, topk, indexes); + free(pred); + if(indexes[0] == class) avg_acc += 1; + for(j = 0; j < topk; ++j){ + if(indexes[j] == class) avg_topk += 1; + } + + printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1)); + } +} + +void validate_classifier_full(char *datacfg, char *filename, char *weightfile) +{ + int i, j; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + float avg_acc = 0; + float avg_topk = 0; + int *indexes = calloc(topk, sizeof(int)); + + int size = net->w; + for(i = 0; i < m; ++i){ + int class = -1; + char *path = paths[i]; + for(j = 0; j < classes; ++j){ + if(strstr(path, labels[j])){ + class = j; + break; + } + } + image im = load_image_color(paths[i], 0, 0); + image resized = resize_min(im, size); + resize_network(net, resized.w, resized.h); + //show_image(im, "orig"); + //show_image(crop, "cropped"); + //cvWaitKey(0); + float *pred = network_predict(net, resized.data); + if(net->hierarchy) hierarchy_predictions(pred, net->outputs, net->hierarchy, 1, 1); + + free_image(im); + free_image(resized); + top_k(pred, classes, topk, indexes); + + if(indexes[0] == class) avg_acc += 1; + for(j = 0; j < topk; ++j){ + if(indexes[j] == class) avg_topk += 1; + } + + printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1)); + } +} + + +void validate_classifier_single(char *datacfg, char *filename, char *weightfile) +{ + int i, j; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *leaf_list = option_find_str(options, "leaves", 0); + if(leaf_list) change_leaves(net->hierarchy, leaf_list); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + float avg_acc = 0; + float avg_topk = 0; + int *indexes = calloc(topk, sizeof(int)); + + for(i = 0; i < m; ++i){ + int class = -1; + char *path = paths[i]; + for(j = 0; j < classes; ++j){ + if(strstr(path, labels[j])){ + class = j; + break; + } + } + image im = load_image_color(paths[i], 0, 0); + image crop = center_crop_image(im, net->w, net->h); + //grayscale_image_3c(crop); + //show_image(im, "orig"); + //show_image(crop, "cropped"); + //cvWaitKey(0); + float *pred = network_predict(net, crop.data); + if(net->hierarchy) hierarchy_predictions(pred, net->outputs, net->hierarchy, 1, 1); + + free_image(im); + free_image(crop); + top_k(pred, classes, topk, indexes); + + if(indexes[0] == class) avg_acc += 1; + for(j = 0; j < topk; ++j){ + if(indexes[j] == class) avg_topk += 1; + } + + printf("%s, %d, %f, %f, \n", paths[i], class, pred[0], pred[1]); + printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1)); + } +} + +void validate_classifier_multi(char *datacfg, char *cfg, char *weights) +{ + int i, j; + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "labels", "data/labels.list"); + char *valid_list = option_find_str(options, "valid", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + int topk = option_find_int(options, "top", 1); + + char **labels = get_labels(label_list); + list *plist = get_paths(valid_list); + //int scales[] = {224, 288, 320, 352, 384}; + int scales[] = {224, 256, 288, 320}; + int nscales = sizeof(scales)/sizeof(scales[0]); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + float avg_acc = 0; + float avg_topk = 0; + int *indexes = calloc(topk, sizeof(int)); + + for(i = 0; i < m; ++i){ + int class = -1; + char *path = paths[i]; + for(j = 0; j < classes; ++j){ + if(strstr(path, labels[j])){ + class = j; + break; + } + } + float *pred = calloc(classes, sizeof(float)); + image im = load_image_color(paths[i], 0, 0); + for(j = 0; j < nscales; ++j){ + image r = resize_max(im, scales[j]); + resize_network(net, r.w, r.h); + float *p = network_predict(net, r.data); + if(net->hierarchy) hierarchy_predictions(p, net->outputs, net->hierarchy, 1 , 1); + axpy_cpu(classes, 1, p, 1, pred, 1); + flip_image(r); + p = network_predict(net, r.data); + axpy_cpu(classes, 1, p, 1, pred, 1); + if(r.data != im.data) free_image(r); + } + free_image(im); + top_k(pred, classes, topk, indexes); + free(pred); + if(indexes[0] == class) avg_acc += 1; + for(j = 0; j < topk; ++j){ + if(indexes[j] == class) avg_topk += 1; + } + + printf("%d: top 1: %f, top %d: %f\n", i, avg_acc/(i+1), topk, avg_topk/(i+1)); + } +} + +void try_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int layer_num) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + list *options = read_data_cfg(datacfg); + + char *name_list = option_find_str(options, "names", 0); + if(!name_list) name_list = option_find_str(options, "labels", "data/labels.list"); + int top = option_find_int(options, "top", 1); + + int i = 0; + char **names = get_labels(name_list); + clock_t time; + int *indexes = calloc(top, sizeof(int)); + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image orig = load_image_color(input, 0, 0); + image r = resize_min(orig, 256); + image im = crop_image(r, (r.w - 224 - 1)/2 + 1, (r.h - 224 - 1)/2 + 1, 224, 224); + float mean[] = {0.48263312050943, 0.45230225481413, 0.40099074308742}; + float std[] = {0.22590347483426, 0.22120921437787, 0.22103996251583}; + float var[3]; + var[0] = std[0]*std[0]; + var[1] = std[1]*std[1]; + var[2] = std[2]*std[2]; + + normalize_cpu(im.data, mean, var, 1, 3, im.w*im.h); + + float *X = im.data; + time=clock(); + float *predictions = network_predict(net, X); + + layer l = net->layers[layer_num]; + for(i = 0; i < l.c; ++i){ + if(l.rolling_mean) printf("%f %f %f\n", l.rolling_mean[i], l.rolling_variance[i], l.scales[i]); + } +#ifdef GPU + cuda_pull_array(l.output_gpu, l.output, l.outputs); +#endif + for(i = 0; i < l.outputs; ++i){ + printf("%f\n", l.output[i]); + } + /* + + printf("\n\nWeights\n"); + for(i = 0; i < l.n*l.size*l.size*l.c; ++i){ + printf("%f\n", l.filters[i]); + } + + printf("\n\nBiases\n"); + for(i = 0; i < l.n; ++i){ + printf("%f\n", l.biases[i]); + } + */ + + top_predictions(net, top, indexes); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + for(i = 0; i < top; ++i){ + int index = indexes[i]; + printf("%s: %f\n", names[index], predictions[index]); + } + free_image(im); + if (filename) break; + } +} + +void predict_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int top) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + list *options = read_data_cfg(datacfg); + + char *name_list = option_find_str(options, "names", 0); + if(!name_list) name_list = option_find_str(options, "labels", "data/labels.list"); + if(top == 0) top = option_find_int(options, "top", 1); + + int i = 0; + char **names = get_labels(name_list); + clock_t time; + int *indexes = calloc(top, sizeof(int)); + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image r = letterbox_image(im, net->w, net->h); + //image r = resize_min(im, 320); + //printf("%d %d\n", r.w, r.h); + //resize_network(net, r.w, r.h); + //printf("%d %d\n", r.w, r.h); + + float *X = r.data; + time=clock(); + float *predictions = network_predict(net, X); + if(net->hierarchy) hierarchy_predictions(predictions, net->outputs, net->hierarchy, 1, 1); + top_k(predictions, net->outputs, top, indexes); + fprintf(stderr, "%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + for(i = 0; i < top; ++i){ + int index = indexes[i]; + //if(net->hierarchy) printf("%d, %s: %f, parent: %s \n",index, names[index], predictions[index], (net->hierarchy->parent[index] >= 0) ? names[net->hierarchy->parent[index]] : "Root"); + //else printf("%s: %f\n",names[index], predictions[index]); + printf("%5.2f%%: %s\n", predictions[index]*100, names[index]); + } + if(r.data != im.data) free_image(r); + free_image(im); + if (filename) break; + } +} + + +void label_classifier(char *datacfg, char *filename, char *weightfile) +{ + int i; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *label_list = option_find_str(options, "names", "data/labels.list"); + char *test_list = option_find_str(options, "test", "data/train.list"); + int classes = option_find_int(options, "classes", 2); + + char **labels = get_labels(label_list); + list *plist = get_paths(test_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + for(i = 0; i < m; ++i){ + image im = load_image_color(paths[i], 0, 0); + image resized = resize_min(im, net->w); + image crop = crop_image(resized, (resized.w - net->w)/2, (resized.h - net->h)/2, net->w, net->h); + float *pred = network_predict(net, crop.data); + + if(resized.data != im.data) free_image(resized); + free_image(im); + free_image(crop); + int ind = max_index(pred, classes); + + printf("%s\n", labels[ind]); + } +} + +void csv_classifier(char *datacfg, char *cfgfile, char *weightfile) +{ + int i,j; + network *net = load_network(cfgfile, weightfile, 0); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *test_list = option_find_str(options, "test", "data/test.list"); + int top = option_find_int(options, "top", 1); + + list *plist = get_paths(test_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + int *indexes = calloc(top, sizeof(int)); + + for(i = 0; i < m; ++i){ + double time = what_time_is_it_now(); + char *path = paths[i]; + image im = load_image_color(path, 0, 0); + image r = letterbox_image(im, net->w, net->h); + float *predictions = network_predict(net, r.data); + if(net->hierarchy) hierarchy_predictions(predictions, net->outputs, net->hierarchy, 1, 1); + top_k(predictions, net->outputs, top, indexes); + + printf("%s", path); + for(j = 0; j < top; ++j){ + printf("\t%d", indexes[j]); + } + printf("\n"); + + free_image(im); + free_image(r); + + fprintf(stderr, "%lf seconds, %d images, %d total\n", what_time_is_it_now() - time, i+1, m); + } +} + +void test_classifier(char *datacfg, char *cfgfile, char *weightfile, int target_layer) +{ + int curr = 0; + network *net = load_network(cfgfile, weightfile, 0); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + char *test_list = option_find_str(options, "test", "data/test.list"); + int classes = option_find_int(options, "classes", 2); + + list *plist = get_paths(test_list); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + clock_t time; + + data val, buffer; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.paths = paths; + args.classes = classes; + args.n = net->batch; + args.m = 0; + args.labels = 0; + args.d = &buffer; + args.type = OLD_CLASSIFICATION_DATA; + + pthread_t load_thread = load_data_in_thread(args); + for(curr = net->batch; curr < m; curr += net->batch){ + time=clock(); + + pthread_join(load_thread, 0); + val = buffer; + + if(curr < m){ + args.paths = paths + curr; + if (curr + net->batch > m) args.n = m - curr; + load_thread = load_data_in_thread(args); + } + fprintf(stderr, "Loaded: %d images in %lf seconds\n", val.X.rows, sec(clock()-time)); + + time=clock(); + matrix pred = network_predict_data(net, val); + + int i, j; + if (target_layer >= 0){ + //layer l = net->layers[target_layer]; + } + + for(i = 0; i < pred.rows; ++i){ + printf("%s", paths[curr-net->batch+i]); + for(j = 0; j < pred.cols; ++j){ + printf("\t%g", pred.vals[i][j]); + } + printf("\n"); + } + + free_matrix(pred); + + fprintf(stderr, "%lf seconds, %d images, %d total\n", sec(clock()-time), val.X.rows, curr); + free_data(val); + } +} + +void file_output_classifier(char *datacfg, char *filename, char *weightfile, char *listfile) +{ + int i,j; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + + list *options = read_data_cfg(datacfg); + + //char *label_list = option_find_str(options, "names", "data/labels.list"); + int classes = option_find_int(options, "classes", 2); + + list *plist = get_paths(listfile); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + for(i = 0; i < m; ++i){ + image im = load_image_color(paths[i], 0, 0); + image resized = resize_min(im, net->w); + image crop = crop_image(resized, (resized.w - net->w)/2, (resized.h - net->h)/2, net->w, net->h); + + float *pred = network_predict(net, crop.data); + if(net->hierarchy) hierarchy_predictions(pred, net->outputs, net->hierarchy, 0, 1); + + if(resized.data != im.data) free_image(resized); + free_image(im); + free_image(crop); + + printf("%s", paths[i]); + for(j = 0; j < classes; ++j){ + printf("\t%g", pred[j]); + } + printf("\n"); + } +} + + +void threat_classifier(char *datacfg, char *cfgfile, char *weightfile, int cam_index, const char *filename) +{ +#ifdef OPENCV + float threat = 0; + float roll = .2; + + printf("Classifier Demo\n"); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + list *options = read_data_cfg(datacfg); + + srand(2222222); + void * cap = open_video_stream(filename, cam_index, 0,0,0); + + int top = option_find_int(options, "top", 1); + + char *name_list = option_find_str(options, "names", 0); + char **names = get_labels(name_list); + + int *indexes = calloc(top, sizeof(int)); + + if(!cap) error("Couldn't connect to webcam.\n"); + //cvNamedWindow("Threat", CV_WINDOW_NORMAL); + //cvResizeWindow("Threat", 512, 512); + float fps = 0; + int i; + + int count = 0; + + while(1){ + ++count; + struct timeval tval_before, tval_after, tval_result; + gettimeofday(&tval_before, NULL); + + image in = get_image_from_stream(cap); + if(!in.data) break; + image in_s = resize_image(in, net->w, net->h); + + image out = in; + int x1 = out.w / 20; + int y1 = out.h / 20; + int x2 = 2*x1; + int y2 = out.h - out.h/20; + + int border = .01*out.h; + int h = y2 - y1 - 2*border; + int w = x2 - x1 - 2*border; + + float *predictions = network_predict(net, in_s.data); + float curr_threat = 0; + if(1){ + curr_threat = predictions[0] * 0 + + predictions[1] * .6 + + predictions[2]; + } else { + curr_threat = predictions[218] + + predictions[539] + + predictions[540] + + predictions[368] + + predictions[369] + + predictions[370]; + } + threat = roll * curr_threat + (1-roll) * threat; + + draw_box_width(out, x2 + border, y1 + .02*h, x2 + .5 * w, y1 + .02*h + border, border, 0,0,0); + if(threat > .97) { + draw_box_width(out, x2 + .5 * w + border, + y1 + .02*h - 2*border, + x2 + .5 * w + 6*border, + y1 + .02*h + 3*border, 3*border, 1,0,0); + } + draw_box_width(out, x2 + .5 * w + border, + y1 + .02*h - 2*border, + x2 + .5 * w + 6*border, + y1 + .02*h + 3*border, .5*border, 0,0,0); + draw_box_width(out, x2 + border, y1 + .42*h, x2 + .5 * w, y1 + .42*h + border, border, 0,0,0); + if(threat > .57) { + draw_box_width(out, x2 + .5 * w + border, + y1 + .42*h - 2*border, + x2 + .5 * w + 6*border, + y1 + .42*h + 3*border, 3*border, 1,1,0); + } + draw_box_width(out, x2 + .5 * w + border, + y1 + .42*h - 2*border, + x2 + .5 * w + 6*border, + y1 + .42*h + 3*border, .5*border, 0,0,0); + + draw_box_width(out, x1, y1, x2, y2, border, 0,0,0); + for(i = 0; i < threat * h ; ++i){ + float ratio = (float) i / h; + float r = (ratio < .5) ? (2*(ratio)) : 1; + float g = (ratio < .5) ? 1 : 1 - 2*(ratio - .5); + draw_box_width(out, x1 + border, y2 - border - i, x2 - border, y2 - border - i, 1, r, g, 0); + } + top_predictions(net, top, indexes); + char buff[256]; + sprintf(buff, "/home/pjreddie/tmp/threat_%06d", count); + //save_image(out, buff); + + printf("\033[2J"); + printf("\033[1;1H"); + printf("\nFPS:%.0f\n",fps); + + for(i = 0; i < top; ++i){ + int index = indexes[i]; + printf("%.1f%%: %s\n", predictions[index]*100, names[index]); + } + + if(1){ + show_image(out, "Threat", 10); + } + free_image(in_s); + free_image(in); + + gettimeofday(&tval_after, NULL); + timersub(&tval_after, &tval_before, &tval_result); + float curr = 1000000.f/((long int)tval_result.tv_usec); + fps = .9*fps + .1*curr; + } +#endif +} + + +void gun_classifier(char *datacfg, char *cfgfile, char *weightfile, int cam_index, const char *filename) +{ +#ifdef OPENCV + int bad_cats[] = {218, 539, 540, 1213, 1501, 1742, 1911, 2415, 4348, 19223, 368, 369, 370, 1133, 1200, 1306, 2122, 2301, 2537, 2823, 3179, 3596, 3639, 4489, 5107, 5140, 5289, 6240, 6631, 6762, 7048, 7171, 7969, 7984, 7989, 8824, 8927, 9915, 10270, 10448, 13401, 15205, 18358, 18894, 18895, 19249, 19697}; + + printf("Classifier Demo\n"); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + list *options = read_data_cfg(datacfg); + + srand(2222222); + void * cap = open_video_stream(filename, cam_index, 0,0,0); + + int top = option_find_int(options, "top", 1); + + char *name_list = option_find_str(options, "names", 0); + char **names = get_labels(name_list); + + int *indexes = calloc(top, sizeof(int)); + + if(!cap) error("Couldn't connect to webcam.\n"); + float fps = 0; + int i; + + while(1){ + struct timeval tval_before, tval_after, tval_result; + gettimeofday(&tval_before, NULL); + + image in = get_image_from_stream(cap); + image in_s = resize_image(in, net->w, net->h); + + float *predictions = network_predict(net, in_s.data); + top_predictions(net, top, indexes); + + printf("\033[2J"); + printf("\033[1;1H"); + + int threat = 0; + for(i = 0; i < sizeof(bad_cats)/sizeof(bad_cats[0]); ++i){ + int index = bad_cats[i]; + if(predictions[index] > .01){ + printf("Threat Detected!\n"); + threat = 1; + break; + } + } + if(!threat) printf("Scanning...\n"); + for(i = 0; i < sizeof(bad_cats)/sizeof(bad_cats[0]); ++i){ + int index = bad_cats[i]; + if(predictions[index] > .01){ + printf("%s\n", names[index]); + } + } + + show_image(in, "Threat Detection", 10); + free_image(in_s); + free_image(in); + + gettimeofday(&tval_after, NULL); + timersub(&tval_after, &tval_before, &tval_result); + float curr = 1000000.f/((long int)tval_result.tv_usec); + fps = .9*fps + .1*curr; + } +#endif +} + +void demo_classifier(char *datacfg, char *cfgfile, char *weightfile, int cam_index, const char *filename) +{ +#ifdef OPENCV + char *base = basecfg(cfgfile); + image **alphabet = load_alphabet(); + printf("Classifier Demo\n"); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + list *options = read_data_cfg(datacfg); + + srand(2222222); + + int w = 1280; + int h = 720; + void * cap = open_video_stream(filename, cam_index, w, h, 0); + + int top = option_find_int(options, "top", 1); + + char *label_list = option_find_str(options, "labels", 0); + char *name_list = option_find_str(options, "names", label_list); + char **names = get_labels(name_list); + + int *indexes = calloc(top, sizeof(int)); + + if(!cap) error("Couldn't connect to webcam.\n"); + float fps = 0; + int i; + + while(1){ + struct timeval tval_before, tval_after, tval_result; + gettimeofday(&tval_before, NULL); + + image in = get_image_from_stream(cap); + //image in_s = resize_image(in, net->w, net->h); + image in_s = letterbox_image(in, net->w, net->h); + + float *predictions = network_predict(net, in_s.data); + if(net->hierarchy) hierarchy_predictions(predictions, net->outputs, net->hierarchy, 1, 1); + top_predictions(net, top, indexes); + + printf("\033[2J"); + printf("\033[1;1H"); + printf("\nFPS:%.0f\n",fps); + + int lh = in.h*.03; + int toph = 3*lh; + + float rgb[3] = {1,1,1}; + for(i = 0; i < top; ++i){ + printf("%d\n", toph); + int index = indexes[i]; + printf("%.1f%%: %s\n", predictions[index]*100, names[index]); + + char buff[1024]; + sprintf(buff, "%3.1f%%: %s\n", predictions[index]*100, names[index]); + image label = get_label(alphabet, buff, lh); + draw_label(in, toph, lh, label, rgb); + toph += 2*lh; + free_image(label); + } + + show_image(in, base, 10); + free_image(in_s); + free_image(in); + + gettimeofday(&tval_after, NULL); + timersub(&tval_after, &tval_before, &tval_result); + float curr = 1000000.f/((long int)tval_result.tv_usec); + fps = .9*fps + .1*curr; + } +#endif +} + + +void run_classifier(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + int ngpus; + int *gpus = read_intlist(gpu_list, &ngpus, gpu_index); + + + int cam_index = find_int_arg(argc, argv, "-c", 0); + int top = find_int_arg(argc, argv, "-t", 0); + int clear = find_arg(argc, argv, "-clear"); + char *data = argv[3]; + char *cfg = argv[4]; + char *weights = (argc > 5) ? argv[5] : 0; + char *filename = (argc > 6) ? argv[6]: 0; + char *layer_s = (argc > 7) ? argv[7]: 0; + int layer = layer_s ? atoi(layer_s) : -1; + if(0==strcmp(argv[2], "predict")) predict_classifier(data, cfg, weights, filename, top); + else if(0==strcmp(argv[2], "fout")) file_output_classifier(data, cfg, weights, filename); + else if(0==strcmp(argv[2], "try")) try_classifier(data, cfg, weights, filename, atoi(layer_s)); + else if(0==strcmp(argv[2], "train")) train_classifier(data, cfg, weights, gpus, ngpus, clear); + else if(0==strcmp(argv[2], "demo")) demo_classifier(data, cfg, weights, cam_index, filename); + else if(0==strcmp(argv[2], "gun")) gun_classifier(data, cfg, weights, cam_index, filename); + else if(0==strcmp(argv[2], "threat")) threat_classifier(data, cfg, weights, cam_index, filename); + else if(0==strcmp(argv[2], "test")) test_classifier(data, cfg, weights, layer); + else if(0==strcmp(argv[2], "csv")) csv_classifier(data, cfg, weights); + else if(0==strcmp(argv[2], "label")) label_classifier(data, cfg, weights); + else if(0==strcmp(argv[2], "valid")) validate_classifier_single(data, cfg, weights); + else if(0==strcmp(argv[2], "validmulti")) validate_classifier_multi(data, cfg, weights); + else if(0==strcmp(argv[2], "valid10")) validate_classifier_10(data, cfg, weights); + else if(0==strcmp(argv[2], "validcrop")) validate_classifier_crop(data, cfg, weights); + else if(0==strcmp(argv[2], "validfull")) validate_classifier_full(data, cfg, weights); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/coco.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/coco.c" new file mode 100644 index 00000000..6a50b89a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/coco.c" @@ -0,0 +1,357 @@ +#include "darknet.h" + +#include + +char *coco_classes[] = {"person","bicycle","car","motorcycle","airplane","bus","train","truck","boat","traffic light","fire hydrant","stop sign","parking meter","bench","bird","cat","dog","horse","sheep","cow","elephant","bear","zebra","giraffe","backpack","umbrella","handbag","tie","suitcase","frisbee","skis","snowboard","sports ball","kite","baseball bat","baseball glove","skateboard","surfboard","tennis racket","bottle","wine glass","cup","fork","knife","spoon","bowl","banana","apple","sandwich","orange","broccoli","carrot","hot dog","pizza","donut","cake","chair","couch","potted plant","bed","dining table","toilet","tv","laptop","mouse","remote","keyboard","cell phone","microwave","oven","toaster","sink","refrigerator","book","clock","vase","scissors","teddy bear","hair drier","toothbrush"}; + +int coco_ids[] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,70,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90}; + +void train_coco(char *cfgfile, char *weightfile) +{ + //char *train_images = "/home/pjreddie/data/voc/test/train.txt"; + //char *train_images = "/home/pjreddie/data/coco/train.txt"; + char *train_images = "data/coco.trainval.txt"; + //char *train_images = "data/bags.train.list"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network *net = load_network(cfgfile, weightfile, 0); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = net->batch*net->subdivisions; + int i = *net->seen/imgs; + data train, buffer; + + + layer l = net->layers[net->n - 1]; + + int side = l.side; + int classes = l.classes; + float jitter = l.jitter; + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.classes = classes; + args.jitter = jitter; + args.num_boxes = side; + args.d = &buffer; + args.type = REGION_DATA; + + args.angle = net->angle; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + //while(i*imgs < N*120){ + while(get_current_batch(net) < net->max_batches){ + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + /* + image im = float_to_image(net->w, net->h, 3, train.X.vals[113]); + image copy = copy_image(im); + draw_coco(copy, train.y.vals[113], 7, "truth"); + cvWaitKey(0); + free_image(copy); + */ + + time=clock(); + float loss = train_network(net, train); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + printf("%d: %f, %f avg, %f rate, %lf seconds, %d images\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0 || (i < 1000 && i%100 == 0)){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + } + free_data(train); + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + +static void print_cocos(FILE *fp, int image_id, detection *dets, int num_boxes, int classes, int w, int h) +{ + int i, j; + for(i = 0; i < num_boxes; ++i){ + float xmin = dets[i].bbox.x - dets[i].bbox.w/2.; + float xmax = dets[i].bbox.x + dets[i].bbox.w/2.; + float ymin = dets[i].bbox.y - dets[i].bbox.h/2.; + float ymax = dets[i].bbox.y + dets[i].bbox.h/2.; + + if (xmin < 0) xmin = 0; + if (ymin < 0) ymin = 0; + if (xmax > w) xmax = w; + if (ymax > h) ymax = h; + + float bx = xmin; + float by = ymin; + float bw = xmax - xmin; + float bh = ymax - ymin; + + for(j = 0; j < classes; ++j){ + if (dets[i].prob[j]) fprintf(fp, "{\"image_id\":%d, \"category_id\":%d, \"bbox\":[%f, %f, %f, %f], \"score\":%f},\n", image_id, coco_ids[j], bx, by, bw, bh, dets[i].prob[j]); + } + } +} + +int get_coco_image_id(char *filename) +{ + char *p = strrchr(filename, '_'); + return atoi(p+1); +} + +void validate_coco(char *cfg, char *weights) +{ + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + char *base = "results/"; + list *plist = get_paths("data/coco_val_5k.list"); + //list *plist = get_paths("/home/pjreddie/data/people-art/test.txt"); + //list *plist = get_paths("/home/pjreddie/data/voc/test/2007_test.txt"); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + int classes = l.classes; + + char buff[1024]; + snprintf(buff, 1024, "%s/coco_results.json", base); + FILE *fp = fopen(buff, "w"); + fprintf(fp, "[\n"); + + int m = plist->size; + int i=0; + int t; + + float thresh = .01; + int nms = 1; + float iou_thresh = .5; + + int nthreads = 8; + image *val = calloc(nthreads, sizeof(image)); + image *val_resized = calloc(nthreads, sizeof(image)); + image *buf = calloc(nthreads, sizeof(image)); + image *buf_resized = calloc(nthreads, sizeof(image)); + pthread_t *thr = calloc(nthreads, sizeof(pthread_t)); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.type = IMAGE_DATA; + + for(t = 0; t < nthreads; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + time_t start = time(0); + for(i = nthreads; i < m+nthreads; i += nthreads){ + fprintf(stderr, "%d\n", i); + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + pthread_join(thr[t], 0); + val[t] = buf[t]; + val_resized[t] = buf_resized[t]; + } + for(t = 0; t < nthreads && i+t < m; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + char *path = paths[i+t-nthreads]; + int image_id = get_coco_image_id(path); + float *X = val_resized[t].data; + network_predict(net, X); + int w = val[t].w; + int h = val[t].h; + int nboxes = 0; + detection *dets = get_network_boxes(net, w, h, thresh, 0, 0, 0, &nboxes); + if (nms) do_nms_sort(dets, l.side*l.side*l.n, classes, iou_thresh); + print_cocos(fp, image_id, dets, l.side*l.side*l.n, classes, w, h); + free_detections(dets, nboxes); + free_image(val[t]); + free_image(val_resized[t]); + } + } + fseek(fp, -2, SEEK_CUR); + fprintf(fp, "\n]\n"); + fclose(fp); + + fprintf(stderr, "Total Detection Time: %f Seconds\n", (double)(time(0) - start)); +} + +void validate_coco_recall(char *cfgfile, char *weightfile) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + char *base = "results/comp4_det_test_"; + list *plist = get_paths("/home/pjreddie/data/voc/test/2007_test.txt"); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + int classes = l.classes; + int side = l.side; + + int j, k; + FILE **fps = calloc(classes, sizeof(FILE *)); + for(j = 0; j < classes; ++j){ + char buff[1024]; + snprintf(buff, 1024, "%s%s.txt", base, coco_classes[j]); + fps[j] = fopen(buff, "w"); + } + + int m = plist->size; + int i=0; + + float thresh = .001; + int nms = 0; + float iou_thresh = .5; + + int total = 0; + int correct = 0; + int proposals = 0; + float avg_iou = 0; + + for(i = 0; i < m; ++i){ + char *path = paths[i]; + image orig = load_image_color(path, 0, 0); + image sized = resize_image(orig, net->w, net->h); + char *id = basecfg(path); + network_predict(net, sized.data); + + int nboxes = 0; + detection *dets = get_network_boxes(net, orig.w, orig.h, thresh, 0, 0, 1, &nboxes); + if (nms) do_nms_obj(dets, side*side*l.n, 1, nms); + + char labelpath[4096]; + find_replace(path, "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + + int num_labels = 0; + box_label *truth = read_boxes(labelpath, &num_labels); + for(k = 0; k < side*side*l.n; ++k){ + if(dets[k].objectness > thresh){ + ++proposals; + } + } + for (j = 0; j < num_labels; ++j) { + ++total; + box t = {truth[j].x, truth[j].y, truth[j].w, truth[j].h}; + float best_iou = 0; + for(k = 0; k < side*side*l.n; ++k){ + float iou = box_iou(dets[k].bbox, t); + if(dets[k].objectness > thresh && iou > best_iou){ + best_iou = iou; + } + } + avg_iou += best_iou; + if(best_iou > iou_thresh){ + ++correct; + } + } + free_detections(dets, nboxes); + fprintf(stderr, "%5d %5d %5d\tRPs/Img: %.2f\tIOU: %.2f%%\tRecall:%.2f%%\n", i, correct, total, (float)proposals/(i+1), avg_iou*100/total, 100.*correct/total); + free(id); + free_image(orig); + free_image(sized); + } +} + +void test_coco(char *cfgfile, char *weightfile, char *filename, float thresh) +{ + image **alphabet = load_alphabet(); + network *net = load_network(cfgfile, weightfile, 0); + layer l = net->layers[net->n-1]; + set_batch_network(net, 1); + srand(2222222); + float nms = .4; + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + } else { + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input,0,0); + image sized = resize_image(im, net->w, net->h); + float *X = sized.data; + time=clock(); + network_predict(net, X); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + + int nboxes = 0; + detection *dets = get_network_boxes(net, 1, 1, thresh, 0, 0, 0, &nboxes); + if (nms) do_nms_sort(dets, l.side*l.side*l.n, l.classes, nms); + + draw_detections(im, dets, l.side*l.side*l.n, thresh, coco_classes, alphabet, 80); + save_image(im, "prediction"); + show_image(im, "predictions", 0); + free_detections(dets, nboxes); + free_image(im); + free_image(sized); + if (filename) break; + } +} + +void run_coco(int argc, char **argv) +{ + char *prefix = find_char_arg(argc, argv, "-prefix", 0); + float thresh = find_float_arg(argc, argv, "-thresh", .2); + int cam_index = find_int_arg(argc, argv, "-c", 0); + int frame_skip = find_int_arg(argc, argv, "-s", 0); + + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5]: 0; + int avg = find_int_arg(argc, argv, "-avg", 1); + if(0==strcmp(argv[2], "test")) test_coco(cfg, weights, filename, thresh); + else if(0==strcmp(argv[2], "train")) train_coco(cfg, weights); + else if(0==strcmp(argv[2], "valid")) validate_coco(cfg, weights); + else if(0==strcmp(argv[2], "recall")) validate_coco_recall(cfg, weights); + else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, coco_classes, 80, frame_skip, prefix, avg, .5, 0,0,0,0); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/darknet.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/darknet.c" new file mode 100644 index 00000000..d5383592 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/darknet.c" @@ -0,0 +1,503 @@ +#include "darknet.h" + +#include +#include +#include + +extern void predict_classifier(char *datacfg, char *cfgfile, char *weightfile, char *filename, int top); +extern void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, float hier_thresh, char *outfile, int fullscreen); +extern void run_yolo(int argc, char **argv); +extern void run_detector(int argc, char **argv); +extern void run_coco(int argc, char **argv); +extern void run_nightmare(int argc, char **argv); +extern void run_classifier(int argc, char **argv); +extern void run_regressor(int argc, char **argv); +extern void run_segmenter(int argc, char **argv); +extern void run_isegmenter(int argc, char **argv); +extern void run_char_rnn(int argc, char **argv); +extern void run_tag(int argc, char **argv); +extern void run_cifar(int argc, char **argv); +extern void run_go(int argc, char **argv); +extern void run_art(int argc, char **argv); +extern void run_super(int argc, char **argv); +extern void run_lsd(int argc, char **argv); + +void average(int argc, char *argv[]) +{ + char *cfgfile = argv[2]; + char *outfile = argv[3]; + gpu_index = -1; + network *net = parse_network_cfg(cfgfile); + network *sum = parse_network_cfg(cfgfile); + + char *weightfile = argv[4]; + load_weights(sum, weightfile); + + int i, j; + int n = argc - 5; + for(i = 0; i < n; ++i){ + weightfile = argv[i+5]; + load_weights(net, weightfile); + for(j = 0; j < net->n; ++j){ + layer l = net->layers[j]; + layer out = sum->layers[j]; + if(l.type == CONVOLUTIONAL){ + int num = l.n*l.c*l.size*l.size; + axpy_cpu(l.n, 1, l.biases, 1, out.biases, 1); + axpy_cpu(num, 1, l.weights, 1, out.weights, 1); + if(l.batch_normalize){ + axpy_cpu(l.n, 1, l.scales, 1, out.scales, 1); + axpy_cpu(l.n, 1, l.rolling_mean, 1, out.rolling_mean, 1); + axpy_cpu(l.n, 1, l.rolling_variance, 1, out.rolling_variance, 1); + } + } + if(l.type == CONNECTED){ + axpy_cpu(l.outputs, 1, l.biases, 1, out.biases, 1); + axpy_cpu(l.outputs*l.inputs, 1, l.weights, 1, out.weights, 1); + } + } + } + n = n+1; + for(j = 0; j < net->n; ++j){ + layer l = sum->layers[j]; + if(l.type == CONVOLUTIONAL){ + int num = l.n*l.c*l.size*l.size; + scal_cpu(l.n, 1./n, l.biases, 1); + scal_cpu(num, 1./n, l.weights, 1); + if(l.batch_normalize){ + scal_cpu(l.n, 1./n, l.scales, 1); + scal_cpu(l.n, 1./n, l.rolling_mean, 1); + scal_cpu(l.n, 1./n, l.rolling_variance, 1); + } + } + if(l.type == CONNECTED){ + scal_cpu(l.outputs, 1./n, l.biases, 1); + scal_cpu(l.outputs*l.inputs, 1./n, l.weights, 1); + } + } + save_weights(sum, outfile); +} + +long numops(network *net) +{ + int i; + long ops = 0; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == CONVOLUTIONAL){ + ops += 2l * l.n * l.size*l.size*l.c/l.groups * l.out_h*l.out_w; + } else if(l.type == CONNECTED){ + ops += 2l * l.inputs * l.outputs; + } else if (l.type == RNN){ + ops += 2l * l.input_layer->inputs * l.input_layer->outputs; + ops += 2l * l.self_layer->inputs * l.self_layer->outputs; + ops += 2l * l.output_layer->inputs * l.output_layer->outputs; + } else if (l.type == GRU){ + ops += 2l * l.uz->inputs * l.uz->outputs; + ops += 2l * l.uh->inputs * l.uh->outputs; + ops += 2l * l.ur->inputs * l.ur->outputs; + ops += 2l * l.wz->inputs * l.wz->outputs; + ops += 2l * l.wh->inputs * l.wh->outputs; + ops += 2l * l.wr->inputs * l.wr->outputs; + } else if (l.type == LSTM){ + ops += 2l * l.uf->inputs * l.uf->outputs; + ops += 2l * l.ui->inputs * l.ui->outputs; + ops += 2l * l.ug->inputs * l.ug->outputs; + ops += 2l * l.uo->inputs * l.uo->outputs; + ops += 2l * l.wf->inputs * l.wf->outputs; + ops += 2l * l.wi->inputs * l.wi->outputs; + ops += 2l * l.wg->inputs * l.wg->outputs; + ops += 2l * l.wo->inputs * l.wo->outputs; + } + } + return ops; +} + +void speed(char *cfgfile, int tics) +{ + if (tics == 0) tics = 1000; + network *net = parse_network_cfg(cfgfile); + set_batch_network(net, 1); + int i; + double time=what_time_is_it_now(); + image im = make_image(net->w, net->h, net->c*net->batch); + for(i = 0; i < tics; ++i){ + network_predict(net, im.data); + } + double t = what_time_is_it_now() - time; + long ops = numops(net); + printf("\n%d evals, %f Seconds\n", tics, t); + printf("Floating Point Operations: %.2f Bn\n", (float)ops/1000000000.); + printf("FLOPS: %.2f Bn\n", (float)ops/1000000000.*tics/t); + printf("Speed: %f sec/eval\n", t/tics); + printf("Speed: %f Hz\n", tics/t); +} + +void operations(char *cfgfile) +{ + gpu_index = -1; + network *net = parse_network_cfg(cfgfile); + long ops = numops(net); + printf("Floating Point Operations: %ld\n", ops); + printf("Floating Point Operations: %.2f Bn\n", (float)ops/1000000000.); +} + +void oneoff(char *cfgfile, char *weightfile, char *outfile) +{ + gpu_index = -1; + network *net = parse_network_cfg(cfgfile); + int oldn = net->layers[net->n - 2].n; + int c = net->layers[net->n - 2].c; + scal_cpu(oldn*c, .1, net->layers[net->n - 2].weights, 1); + scal_cpu(oldn, 0, net->layers[net->n - 2].biases, 1); + net->layers[net->n - 2].n = 11921; + net->layers[net->n - 2].biases += 5; + net->layers[net->n - 2].weights += 5*c; + if(weightfile){ + load_weights(net, weightfile); + } + net->layers[net->n - 2].biases -= 5; + net->layers[net->n - 2].weights -= 5*c; + net->layers[net->n - 2].n = oldn; + printf("%d\n", oldn); + layer l = net->layers[net->n - 2]; + copy_cpu(l.n/3, l.biases, 1, l.biases + l.n/3, 1); + copy_cpu(l.n/3, l.biases, 1, l.biases + 2*l.n/3, 1); + copy_cpu(l.n/3*l.c, l.weights, 1, l.weights + l.n/3*l.c, 1); + copy_cpu(l.n/3*l.c, l.weights, 1, l.weights + 2*l.n/3*l.c, 1); + *net->seen = 0; + save_weights(net, outfile); +} + +void oneoff2(char *cfgfile, char *weightfile, char *outfile, int l) +{ + gpu_index = -1; + network *net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights_upto(net, weightfile, 0, net->n); + load_weights_upto(net, weightfile, l, net->n); + } + *net->seen = 0; + save_weights_upto(net, outfile, net->n); +} + +void partial(char *cfgfile, char *weightfile, char *outfile, int max) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 1); + save_weights_upto(net, outfile, max); +} + +void print_weights(char *cfgfile, char *weightfile, int n) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 1); + layer l = net->layers[n]; + int i, j; + //printf("["); + for(i = 0; i < l.n; ++i){ + //printf("["); + for(j = 0; j < l.size*l.size*l.c; ++j){ + //if(j > 0) printf(","); + printf("%g ", l.weights[i*l.size*l.size*l.c + j]); + } + printf("\n"); + //printf("]%s\n", (i == l.n-1)?"":","); + } + //printf("]"); +} + +void rescale_net(char *cfgfile, char *weightfile, char *outfile) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 0); + int i; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == CONVOLUTIONAL){ + rescale_weights(l, 2, -.5); + break; + } + } + save_weights(net, outfile); +} + +void rgbgr_net(char *cfgfile, char *weightfile, char *outfile) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 0); + int i; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == CONVOLUTIONAL){ + rgbgr_weights(l); + break; + } + } + save_weights(net, outfile); +} + +void reset_normalize_net(char *cfgfile, char *weightfile, char *outfile) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 0); + int i; + for (i = 0; i < net->n; ++i) { + layer l = net->layers[i]; + if (l.type == CONVOLUTIONAL && l.batch_normalize) { + denormalize_convolutional_layer(l); + } + if (l.type == CONNECTED && l.batch_normalize) { + denormalize_connected_layer(l); + } + if (l.type == GRU && l.batch_normalize) { + denormalize_connected_layer(*l.input_z_layer); + denormalize_connected_layer(*l.input_r_layer); + denormalize_connected_layer(*l.input_h_layer); + denormalize_connected_layer(*l.state_z_layer); + denormalize_connected_layer(*l.state_r_layer); + denormalize_connected_layer(*l.state_h_layer); + } + } + save_weights(net, outfile); +} + +layer normalize_layer(layer l, int n) +{ + int j; + l.batch_normalize=1; + l.scales = calloc(n, sizeof(float)); + for(j = 0; j < n; ++j){ + l.scales[j] = 1; + } + l.rolling_mean = calloc(n, sizeof(float)); + l.rolling_variance = calloc(n, sizeof(float)); + return l; +} + +void normalize_net(char *cfgfile, char *weightfile, char *outfile) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 0); + int i; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == CONVOLUTIONAL && !l.batch_normalize){ + net->layers[i] = normalize_layer(l, l.n); + } + if (l.type == CONNECTED && !l.batch_normalize) { + net->layers[i] = normalize_layer(l, l.outputs); + } + if (l.type == GRU && l.batch_normalize) { + *l.input_z_layer = normalize_layer(*l.input_z_layer, l.input_z_layer->outputs); + *l.input_r_layer = normalize_layer(*l.input_r_layer, l.input_r_layer->outputs); + *l.input_h_layer = normalize_layer(*l.input_h_layer, l.input_h_layer->outputs); + *l.state_z_layer = normalize_layer(*l.state_z_layer, l.state_z_layer->outputs); + *l.state_r_layer = normalize_layer(*l.state_r_layer, l.state_r_layer->outputs); + *l.state_h_layer = normalize_layer(*l.state_h_layer, l.state_h_layer->outputs); + net->layers[i].batch_normalize=1; + } + } + save_weights(net, outfile); +} + +void statistics_net(char *cfgfile, char *weightfile) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 0); + int i; + for (i = 0; i < net->n; ++i) { + layer l = net->layers[i]; + if (l.type == CONNECTED && l.batch_normalize) { + printf("Connected Layer %d\n", i); + statistics_connected_layer(l); + } + if (l.type == GRU && l.batch_normalize) { + printf("GRU Layer %d\n", i); + printf("Input Z\n"); + statistics_connected_layer(*l.input_z_layer); + printf("Input R\n"); + statistics_connected_layer(*l.input_r_layer); + printf("Input H\n"); + statistics_connected_layer(*l.input_h_layer); + printf("State Z\n"); + statistics_connected_layer(*l.state_z_layer); + printf("State R\n"); + statistics_connected_layer(*l.state_r_layer); + printf("State H\n"); + statistics_connected_layer(*l.state_h_layer); + } + printf("\n"); + } +} + +void denormalize_net(char *cfgfile, char *weightfile, char *outfile) +{ + gpu_index = -1; + network *net = load_network(cfgfile, weightfile, 0); + int i; + for (i = 0; i < net->n; ++i) { + layer l = net->layers[i]; + if ((l.type == DECONVOLUTIONAL || l.type == CONVOLUTIONAL) && l.batch_normalize) { + denormalize_convolutional_layer(l); + net->layers[i].batch_normalize=0; + } + if (l.type == CONNECTED && l.batch_normalize) { + denormalize_connected_layer(l); + net->layers[i].batch_normalize=0; + } + if (l.type == GRU && l.batch_normalize) { + denormalize_connected_layer(*l.input_z_layer); + denormalize_connected_layer(*l.input_r_layer); + denormalize_connected_layer(*l.input_h_layer); + denormalize_connected_layer(*l.state_z_layer); + denormalize_connected_layer(*l.state_r_layer); + denormalize_connected_layer(*l.state_h_layer); + l.input_z_layer->batch_normalize = 0; + l.input_r_layer->batch_normalize = 0; + l.input_h_layer->batch_normalize = 0; + l.state_z_layer->batch_normalize = 0; + l.state_r_layer->batch_normalize = 0; + l.state_h_layer->batch_normalize = 0; + net->layers[i].batch_normalize=0; + } + } + save_weights(net, outfile); +} + +void mkimg(char *cfgfile, char *weightfile, int h, int w, int num, char *prefix) +{ + network *net = load_network(cfgfile, weightfile, 0); + image *ims = get_weights(net->layers[0]); + int n = net->layers[0].n; + int z; + for(z = 0; z < num; ++z){ + image im = make_image(h, w, 3); + fill_image(im, .5); + int i; + for(i = 0; i < 100; ++i){ + image r = copy_image(ims[rand()%n]); + rotate_image_cw(r, rand()%4); + random_distort_image(r, 1, 1.5, 1.5); + int dx = rand()%(w-r.w); + int dy = rand()%(h-r.h); + ghost_image(r, im, dx, dy); + free_image(r); + } + char buff[256]; + sprintf(buff, "%s/gen_%d", prefix, z); + save_image(im, buff); + free_image(im); + } +} + +void visualize(char *cfgfile, char *weightfile) +{ + network *net = load_network(cfgfile, weightfile, 0); + visualize_network(net); +} + +int main(int argc, char **argv) +{ + //test_resize("data/bad.jpg"); + //test_box(); + //test_convolutional_layer(); + if(argc < 2){ + fprintf(stderr, "usage: %s \n", argv[0]); + return 0; + } + gpu_index = find_int_arg(argc, argv, "-i", 0); + if(find_arg(argc, argv, "-nogpu")) { + gpu_index = -1; + } + +#ifndef GPU + gpu_index = -1; +#else + if(gpu_index >= 0){ + cuda_set_device(gpu_index); + } +#endif + + if (0 == strcmp(argv[1], "average")){ + average(argc, argv); + } else if (0 == strcmp(argv[1], "yolo")){ + run_yolo(argc, argv); + } else if (0 == strcmp(argv[1], "super")){ + run_super(argc, argv); + } else if (0 == strcmp(argv[1], "lsd")){ + run_lsd(argc, argv); + } else if (0 == strcmp(argv[1], "detector")){ + run_detector(argc, argv); + } else if (0 == strcmp(argv[1], "detect")){ + float thresh = find_float_arg(argc, argv, "-thresh", .5); + char *filename = (argc > 4) ? argv[4]: 0; + char *outfile = find_char_arg(argc, argv, "-out", 0); + int fullscreen = find_arg(argc, argv, "-fullscreen"); + test_detector("cfg/coco.data", argv[2], argv[3], filename, thresh, .5, outfile, fullscreen); + } else if (0 == strcmp(argv[1], "cifar")){ + run_cifar(argc, argv); + } else if (0 == strcmp(argv[1], "go")){ + run_go(argc, argv); + } else if (0 == strcmp(argv[1], "rnn")){ + run_char_rnn(argc, argv); + } else if (0 == strcmp(argv[1], "coco")){ + run_coco(argc, argv); + } else if (0 == strcmp(argv[1], "classify")){ + predict_classifier("cfg/imagenet1k.data", argv[2], argv[3], argv[4], 5); + } else if (0 == strcmp(argv[1], "classifier")){ + run_classifier(argc, argv); + } else if (0 == strcmp(argv[1], "regressor")){ + run_regressor(argc, argv); + } else if (0 == strcmp(argv[1], "isegmenter")){ + run_isegmenter(argc, argv); + } else if (0 == strcmp(argv[1], "segmenter")){ + run_segmenter(argc, argv); + } else if (0 == strcmp(argv[1], "art")){ + run_art(argc, argv); + } else if (0 == strcmp(argv[1], "tag")){ + run_tag(argc, argv); + } else if (0 == strcmp(argv[1], "3d")){ + composite_3d(argv[2], argv[3], argv[4], (argc > 5) ? atof(argv[5]) : 0); + } else if (0 == strcmp(argv[1], "test")){ + test_resize(argv[2]); + } else if (0 == strcmp(argv[1], "nightmare")){ + run_nightmare(argc, argv); + } else if (0 == strcmp(argv[1], "rgbgr")){ + rgbgr_net(argv[2], argv[3], argv[4]); + } else if (0 == strcmp(argv[1], "reset")){ + reset_normalize_net(argv[2], argv[3], argv[4]); + } else if (0 == strcmp(argv[1], "denormalize")){ + denormalize_net(argv[2], argv[3], argv[4]); + } else if (0 == strcmp(argv[1], "statistics")){ + statistics_net(argv[2], argv[3]); + } else if (0 == strcmp(argv[1], "normalize")){ + normalize_net(argv[2], argv[3], argv[4]); + } else if (0 == strcmp(argv[1], "rescale")){ + rescale_net(argv[2], argv[3], argv[4]); + } else if (0 == strcmp(argv[1], "ops")){ + operations(argv[2]); + } else if (0 == strcmp(argv[1], "speed")){ + speed(argv[2], (argc > 3 && argv[3]) ? atoi(argv[3]) : 0); + } else if (0 == strcmp(argv[1], "oneoff")){ + oneoff(argv[2], argv[3], argv[4]); + } else if (0 == strcmp(argv[1], "oneoff2")){ + oneoff2(argv[2], argv[3], argv[4], atoi(argv[5])); + } else if (0 == strcmp(argv[1], "print")){ + print_weights(argv[2], argv[3], atoi(argv[4])); + } else if (0 == strcmp(argv[1], "partial")){ + partial(argv[2], argv[3], argv[4], atoi(argv[5])); + } else if (0 == strcmp(argv[1], "average")){ + average(argc, argv); + } else if (0 == strcmp(argv[1], "visualize")){ + visualize(argv[2], (argc > 3) ? argv[3] : 0); + } else if (0 == strcmp(argv[1], "mkimg")){ + mkimg(argv[2], argv[3], atoi(argv[4]), atoi(argv[5]), atoi(argv[6]), argv[7]); + } else if (0 == strcmp(argv[1], "imtest")){ + test_resize(argv[2]); + } else { + fprintf(stderr, "Not an option: %s\n", argv[1]); + } + return 0; +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector-scipy-opencv.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector-scipy-opencv.py" new file mode 100644 index 00000000..3bfc5913 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector-scipy-opencv.py" @@ -0,0 +1,56 @@ +# Stupid python path shit. +# Instead just add darknet.py to somewhere in your python path +# OK actually that might not be a great idea, idk, work in progress +# Use at your own risk. or don't, i don't care + +from scipy.misc import imread +import cv2 + +def array_to_image(arr): + arr = arr.transpose(2,0,1) + c = arr.shape[0] + h = arr.shape[1] + w = arr.shape[2] + arr = (arr/255.0).flatten() + data = dn.c_array(dn.c_float, arr) + im = dn.IMAGE(w,h,c,data) + return im + +def detect2(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45): + boxes = dn.make_boxes(net) + probs = dn.make_probs(net) + num = dn.num_boxes(net) + dn.network_detect(net, image, thresh, hier_thresh, nms, boxes, probs) + res = [] + for j in range(num): + for i in range(meta.classes): + if probs[j][i] > 0: + res.append((meta.names[i], probs[j][i], (boxes[j].x, boxes[j].y, boxes[j].w, boxes[j].h))) + res = sorted(res, key=lambda x: -x[1]) + dn.free_ptrs(dn.cast(probs, dn.POINTER(dn.c_void_p)), num) + return res + +import sys, os +sys.path.append(os.path.join(os.getcwd(),'python/')) + +import darknet as dn + +# Darknet +net = dn.load_net("cfg/tiny-yolo.cfg", "tiny-yolo.weights", 0) +meta = dn.load_meta("cfg/coco.data") +r = dn.detect(net, meta, "data/dog.jpg") +print r + +# scipy +arr= imread('data/dog.jpg') +im = array_to_image(arr) +r = detect2(net, meta, im) +print r + +# OpenCV +arr = cv2.imread('data/dog.jpg') +im = array_to_image(arr) +dn.rgbgr_image(im) +r = detect2(net, meta, im) +print r + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector.c" new file mode 100644 index 00000000..318f7fbb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector.c" @@ -0,0 +1,850 @@ +#include "darknet.h" + +static int coco_ids[] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,70,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90}; + + +void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear) +{ + list *options = read_data_cfg(datacfg); + char *train_images = option_find_str(options, "train", "data/train.list"); + char *backup_directory = option_find_str(options, "backup", "/backup/"); + + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network **nets = calloc(ngpus, sizeof(network)); + + srand(time(0)); + int seed = rand(); + int i; + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + srand(time(0)); + network *net = nets[0]; + + int imgs = net->batch * net->subdivisions * ngpus; + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + data train, buffer; + + layer l = net->layers[net->n - 1]; + + int classes = l.classes; + float jitter = l.jitter; + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = get_base_args(net); + args.coords = l.coords; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.classes = classes; + args.jitter = jitter; + args.num_boxes = l.max_boxes; + args.d = &buffer; + args.type = DETECTION_DATA; + //args.type = INSTANCE_DATA; + args.threads = 64; + + pthread_t load_thread = load_data(args); + double time; + int count = 0; + //while(i*imgs < N*120){ + while(get_current_batch(net) < net->max_batches){ + if(l.random && count++%10 == 0){ + printf("Resizing\n"); + int dim = (rand() % 10 + 10) * 32; + if (get_current_batch(net)+200 > net->max_batches) dim = 608; + //int dim = (rand() % 4 + 16) * 32; + printf("%d\n", dim); + args.w = dim; + args.h = dim; + + pthread_join(load_thread, 0); + train = buffer; + free_data(train); + load_thread = load_data(args); + + #pragma omp parallel for + for(i = 0; i < ngpus; ++i){ + resize_network(nets[i], dim, dim); + } + net = nets[0]; + } + time=what_time_is_it_now(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data(args); + + /* + int k; + for(k = 0; k < l.max_boxes; ++k){ + box b = float_to_box(train.y.vals[10] + 1 + k*5); + if(!b.x) break; + printf("loaded: %f %f %f %f\n", b.x, b.y, b.w, b.h); + } + */ + /* + int zz; + for(zz = 0; zz < train.X.cols; ++zz){ + image im = float_to_image(net->w, net->h, 3, train.X.vals[zz]); + int k; + for(k = 0; k < l.max_boxes; ++k){ + box b = float_to_box(train.y.vals[zz] + k*5, 1); + printf("%f %f %f %f\n", b.x, b.y, b.w, b.h); + draw_bbox(im, b, 1, 1,0,0); + } + show_image(im, "truth11"); + cvWaitKey(0); + save_image(im, "truth11"); + } + */ + + printf("Loaded: %lf seconds\n", what_time_is_it_now()-time); + + time=what_time_is_it_now(); + float loss = 0; +#ifdef GPU + if(ngpus == 1){ + loss = train_network(net, train); + } else { + loss = train_networks(nets, ngpus, train, 4); + } +#else + loss = train_network(net, train); +#endif + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + i = get_current_batch(net); + printf("%ld: %f, %f avg, %f rate, %lf seconds, %d images\n", get_current_batch(net), loss, avg_loss, get_current_rate(net), what_time_is_it_now()-time, i*imgs); + if(i%100==0){ +#ifdef GPU + if(ngpus != 1) sync_nets(nets, ngpus, 0); +#endif + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + } + if(i%10000==0 || (i < 1000 && i%100 == 0)){ +#ifdef GPU + if(ngpus != 1) sync_nets(nets, ngpus, 0); +#endif + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + free_data(train); + } +#ifdef GPU + if(ngpus != 1) sync_nets(nets, ngpus, 0); +#endif + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + + +static int get_coco_image_id(char *filename) +{ + char *p = strrchr(filename, '/'); + char *c = strrchr(filename, '_'); + if(c) p = c; + return atoi(p+1); +} + +static void print_cocos(FILE *fp, char *image_path, detection *dets, int num_boxes, int classes, int w, int h) +{ + int i, j; + int image_id = get_coco_image_id(image_path); + for(i = 0; i < num_boxes; ++i){ + float xmin = dets[i].bbox.x - dets[i].bbox.w/2.; + float xmax = dets[i].bbox.x + dets[i].bbox.w/2.; + float ymin = dets[i].bbox.y - dets[i].bbox.h/2.; + float ymax = dets[i].bbox.y + dets[i].bbox.h/2.; + + if (xmin < 0) xmin = 0; + if (ymin < 0) ymin = 0; + if (xmax > w) xmax = w; + if (ymax > h) ymax = h; + + float bx = xmin; + float by = ymin; + float bw = xmax - xmin; + float bh = ymax - ymin; + + for(j = 0; j < classes; ++j){ + if (dets[i].prob[j]) fprintf(fp, "{\"image_id\":%d, \"category_id\":%d, \"bbox\":[%f, %f, %f, %f], \"score\":%f},\n", image_id, coco_ids[j], bx, by, bw, bh, dets[i].prob[j]); + } + } +} + +void print_detector_detections(FILE **fps, char *id, detection *dets, int total, int classes, int w, int h) +{ + int i, j; + for(i = 0; i < total; ++i){ + float xmin = dets[i].bbox.x - dets[i].bbox.w/2. + 1; + float xmax = dets[i].bbox.x + dets[i].bbox.w/2. + 1; + float ymin = dets[i].bbox.y - dets[i].bbox.h/2. + 1; + float ymax = dets[i].bbox.y + dets[i].bbox.h/2. + 1; + + if (xmin < 1) xmin = 1; + if (ymin < 1) ymin = 1; + if (xmax > w) xmax = w; + if (ymax > h) ymax = h; + + for(j = 0; j < classes; ++j){ + if (dets[i].prob[j]) fprintf(fps[j], "%s %f %f %f %f %f\n", id, dets[i].prob[j], + xmin, ymin, xmax, ymax); + } + } +} + +void print_imagenet_detections(FILE *fp, int id, detection *dets, int total, int classes, int w, int h) +{ + int i, j; + for(i = 0; i < total; ++i){ + float xmin = dets[i].bbox.x - dets[i].bbox.w/2.; + float xmax = dets[i].bbox.x + dets[i].bbox.w/2.; + float ymin = dets[i].bbox.y - dets[i].bbox.h/2.; + float ymax = dets[i].bbox.y + dets[i].bbox.h/2.; + + if (xmin < 0) xmin = 0; + if (ymin < 0) ymin = 0; + if (xmax > w) xmax = w; + if (ymax > h) ymax = h; + + for(j = 0; j < classes; ++j){ + int class = j; + if (dets[i].prob[class]) fprintf(fp, "%d %d %f %f %f %f %f\n", id, j+1, dets[i].prob[class], + xmin, ymin, xmax, ymax); + } + } +} + +void validate_detector_flip(char *datacfg, char *cfgfile, char *weightfile, char *outfile) +{ + int j; + list *options = read_data_cfg(datacfg); + char *valid_images = option_find_str(options, "valid", "data/train.list"); + char *name_list = option_find_str(options, "names", "data/names.list"); + char *prefix = option_find_str(options, "results", "results"); + char **names = get_labels(name_list); + char *mapf = option_find_str(options, "map", 0); + int *map = 0; + if (mapf) map = read_map(mapf); + + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 2); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + list *plist = get_paths(valid_images); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + int classes = l.classes; + + char buff[1024]; + char *type = option_find_str(options, "eval", "voc"); + FILE *fp = 0; + FILE **fps = 0; + int coco = 0; + int imagenet = 0; + if(0==strcmp(type, "coco")){ + if(!outfile) outfile = "coco_results"; + snprintf(buff, 1024, "%s/%s.json", prefix, outfile); + fp = fopen(buff, "w"); + fprintf(fp, "[\n"); + coco = 1; + } else if(0==strcmp(type, "imagenet")){ + if(!outfile) outfile = "imagenet-detection"; + snprintf(buff, 1024, "%s/%s.txt", prefix, outfile); + fp = fopen(buff, "w"); + imagenet = 1; + classes = 200; + } else { + if(!outfile) outfile = "comp4_det_test_"; + fps = calloc(classes, sizeof(FILE *)); + for(j = 0; j < classes; ++j){ + snprintf(buff, 1024, "%s/%s%s.txt", prefix, outfile, names[j]); + fps[j] = fopen(buff, "w"); + } + } + + int m = plist->size; + int i=0; + int t; + + float thresh = .005; + float nms = .45; + + int nthreads = 4; + image *val = calloc(nthreads, sizeof(image)); + image *val_resized = calloc(nthreads, sizeof(image)); + image *buf = calloc(nthreads, sizeof(image)); + image *buf_resized = calloc(nthreads, sizeof(image)); + pthread_t *thr = calloc(nthreads, sizeof(pthread_t)); + + image input = make_image(net->w, net->h, net->c*2); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + //args.type = IMAGE_DATA; + args.type = LETTERBOX_DATA; + + for(t = 0; t < nthreads; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + double start = what_time_is_it_now(); + for(i = nthreads; i < m+nthreads; i += nthreads){ + fprintf(stderr, "%d\n", i); + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + pthread_join(thr[t], 0); + val[t] = buf[t]; + val_resized[t] = buf_resized[t]; + } + for(t = 0; t < nthreads && i+t < m; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + char *path = paths[i+t-nthreads]; + char *id = basecfg(path); + copy_cpu(net->w*net->h*net->c, val_resized[t].data, 1, input.data, 1); + flip_image(val_resized[t]); + copy_cpu(net->w*net->h*net->c, val_resized[t].data, 1, input.data + net->w*net->h*net->c, 1); + + network_predict(net, input.data); + int w = val[t].w; + int h = val[t].h; + int num = 0; + detection *dets = get_network_boxes(net, w, h, thresh, .5, map, 0, &num); + if (nms) do_nms_sort(dets, num, classes, nms); + if (coco){ + print_cocos(fp, path, dets, num, classes, w, h); + } else if (imagenet){ + print_imagenet_detections(fp, i+t-nthreads+1, dets, num, classes, w, h); + } else { + print_detector_detections(fps, id, dets, num, classes, w, h); + } + free_detections(dets, num); + free(id); + free_image(val[t]); + free_image(val_resized[t]); + } + } + for(j = 0; j < classes; ++j){ + if(fps) fclose(fps[j]); + } + if(coco){ + fseek(fp, -2, SEEK_CUR); + fprintf(fp, "\n]\n"); + fclose(fp); + } + fprintf(stderr, "Total Detection Time: %f Seconds\n", what_time_is_it_now() - start); +} + + +void validate_detector(char *datacfg, char *cfgfile, char *weightfile, char *outfile) +{ + int j; + list *options = read_data_cfg(datacfg); + char *valid_images = option_find_str(options, "valid", "data/train.list"); + char *name_list = option_find_str(options, "names", "data/names.list"); + char *prefix = option_find_str(options, "results", "results"); + char **names = get_labels(name_list); + char *mapf = option_find_str(options, "map", 0); + int *map = 0; + if (mapf) map = read_map(mapf); + + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + list *plist = get_paths(valid_images); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + int classes = l.classes; + + char buff[1024]; + char *type = option_find_str(options, "eval", "voc"); + FILE *fp = 0; + FILE **fps = 0; + int coco = 0; + int imagenet = 0; + if(0==strcmp(type, "coco")){ + if(!outfile) outfile = "coco_results"; + snprintf(buff, 1024, "%s/%s.json", prefix, outfile); + fp = fopen(buff, "w"); + fprintf(fp, "[\n"); + coco = 1; + } else if(0==strcmp(type, "imagenet")){ + if(!outfile) outfile = "imagenet-detection"; + snprintf(buff, 1024, "%s/%s.txt", prefix, outfile); + fp = fopen(buff, "w"); + imagenet = 1; + classes = 200; + } else { + if(!outfile) outfile = "comp4_det_test_"; + fps = calloc(classes, sizeof(FILE *)); + for(j = 0; j < classes; ++j){ + snprintf(buff, 1024, "%s/%s%s.txt", prefix, outfile, names[j]); + fps[j] = fopen(buff, "w"); + } + } + + + int m = plist->size; + int i=0; + int t; + + float thresh = .005; + float nms = .45; + + int nthreads = 4; + image *val = calloc(nthreads, sizeof(image)); + image *val_resized = calloc(nthreads, sizeof(image)); + image *buf = calloc(nthreads, sizeof(image)); + image *buf_resized = calloc(nthreads, sizeof(image)); + pthread_t *thr = calloc(nthreads, sizeof(pthread_t)); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + //args.type = IMAGE_DATA; + args.type = LETTERBOX_DATA; + + for(t = 0; t < nthreads; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + double start = what_time_is_it_now(); + for(i = nthreads; i < m+nthreads; i += nthreads){ + fprintf(stderr, "%d\n", i); + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + pthread_join(thr[t], 0); + val[t] = buf[t]; + val_resized[t] = buf_resized[t]; + } + for(t = 0; t < nthreads && i+t < m; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + char *path = paths[i+t-nthreads]; + char *id = basecfg(path); + float *X = val_resized[t].data; + network_predict(net, X); + int w = val[t].w; + int h = val[t].h; + int nboxes = 0; + detection *dets = get_network_boxes(net, w, h, thresh, .5, map, 0, &nboxes); + if (nms) do_nms_sort(dets, nboxes, classes, nms); + if (coco){ + print_cocos(fp, path, dets, nboxes, classes, w, h); + } else if (imagenet){ + print_imagenet_detections(fp, i+t-nthreads+1, dets, nboxes, classes, w, h); + } else { + print_detector_detections(fps, id, dets, nboxes, classes, w, h); + } + free_detections(dets, nboxes); + free(id); + free_image(val[t]); + free_image(val_resized[t]); + } + } + for(j = 0; j < classes; ++j){ + if(fps) fclose(fps[j]); + } + if(coco){ + fseek(fp, -2, SEEK_CUR); + fprintf(fp, "\n]\n"); + fclose(fp); + } + fprintf(stderr, "Total Detection Time: %f Seconds\n", what_time_is_it_now() - start); +} + +void validate_detector_recall(char *cfgfile, char *weightfile) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + list *plist = get_paths("data/coco_val_5k.list"); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + + int j, k; + + int m = plist->size; + int i=0; + + float thresh = .001; + float iou_thresh = .5; + float nms = .4; + + int total = 0; + int correct = 0; + int proposals = 0; + float avg_iou = 0; + + for(i = 0; i < m; ++i){ + char *path = paths[i]; + image orig = load_image_color(path, 0, 0); + image sized = resize_image(orig, net->w, net->h); + char *id = basecfg(path); + network_predict(net, sized.data); + int nboxes = 0; + detection *dets = get_network_boxes(net, sized.w, sized.h, thresh, .5, 0, 1, &nboxes); + if (nms) do_nms_obj(dets, nboxes, 1, nms); + + char labelpath[4096]; + find_replace(path, "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + + int num_labels = 0; + box_label *truth = read_boxes(labelpath, &num_labels); + for(k = 0; k < nboxes; ++k){ + if(dets[k].objectness > thresh){ + ++proposals; + } + } + for (j = 0; j < num_labels; ++j) { + ++total; + box t = {truth[j].x, truth[j].y, truth[j].w, truth[j].h}; + float best_iou = 0; + for(k = 0; k < l.w*l.h*l.n; ++k){ + float iou = box_iou(dets[k].bbox, t); + if(dets[k].objectness > thresh && iou > best_iou){ + best_iou = iou; + } + } + avg_iou += best_iou; + if(best_iou > iou_thresh){ + ++correct; + } + } + + fprintf(stderr, "%5d %5d %5d\tRPs/Img: %.2f\tIOU: %.2f%%\tRecall:%.2f%%\n", i, correct, total, (float)proposals/(i+1), avg_iou*100/total, 100.*correct/total); + free(id); + free_image(orig); + free_image(sized); + } +} + + +void test_detector(char *datacfg, char *cfgfile, char *weightfile, char *filename, float thresh, float hier_thresh, char *outfile, int fullscreen) +{ + list *options = read_data_cfg(datacfg); + char *name_list = option_find_str(options, "names", "data/names.list"); + char **names = get_labels(name_list); + + image **alphabet = load_alphabet(); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + double time; + char buff[256]; + char *input = buff; + float nms=.45; + while(1){ + if(filename){ + strncpy(input, filename, 256); + } else { + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input,0,0); + image sized = letterbox_image(im, net->w, net->h); + //image sized = resize_image(im, net->w, net->h); + //image sized2 = resize_max(im, net->w); + //image sized = crop_image(sized2, -((net->w - sized2.w)/2), -((net->h - sized2.h)/2), net->w, net->h); + //resize_network(net, sized.w, sized.h); + layer l = net->layers[net->n-1]; + + + float *X = sized.data; + time=what_time_is_it_now(); + network_predict(net, X); + printf("%s: Predicted in %f seconds.\n", input, what_time_is_it_now()-time); + int nboxes = 0; + detection *dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, 0, 1, &nboxes); + //printf("%d\n", nboxes); + //if (nms) do_nms_obj(boxes, probs, l.w*l.h*l.n, l.classes, nms); + if (nms) do_nms_sort(dets, nboxes, l.classes, nms); + draw_detections(im, dets, nboxes, thresh, names, alphabet, l.classes); + free_detections(dets, nboxes); + if(outfile){ + save_image(im, outfile); + } + else{ + save_image(im, "predictions"); +#ifdef OPENCV + make_window("predictions", 512, 512, 0); + show_image(im, "predictions", 0); +#endif + } + + free_image(im); + free_image(sized); + if (filename) break; + } +} + +/* +void censor_detector(char *datacfg, char *cfgfile, char *weightfile, int cam_index, const char *filename, int class, float thresh, int skip) +{ +#ifdef OPENCV + char *base = basecfg(cfgfile); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + + srand(2222222); + CvCapture * cap; + + int w = 1280; + int h = 720; + + if(filename){ + cap = cvCaptureFromFile(filename); + }else{ + cap = cvCaptureFromCAM(cam_index); + } + + if(w){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH, w); + } + if(h){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT, h); + } + + if(!cap) error("Couldn't connect to webcam.\n"); + cvNamedWindow(base, CV_WINDOW_NORMAL); + cvResizeWindow(base, 512, 512); + float fps = 0; + int i; + float nms = .45; + + while(1){ + image in = get_image_from_stream(cap); + //image in_s = resize_image(in, net->w, net->h); + image in_s = letterbox_image(in, net->w, net->h); + layer l = net->layers[net->n-1]; + + float *X = in_s.data; + network_predict(net, X); + int nboxes = 0; + detection *dets = get_network_boxes(net, in.w, in.h, thresh, 0, 0, 0, &nboxes); + //if (nms) do_nms_obj(boxes, probs, l.w*l.h*l.n, l.classes, nms); + if (nms) do_nms_sort(dets, nboxes, l.classes, nms); + + for(i = 0; i < nboxes; ++i){ + if(dets[i].prob[class] > thresh){ + box b = dets[i].bbox; + int left = b.x-b.w/2.; + int top = b.y-b.h/2.; + censor_image(in, left, top, b.w, b.h); + } + } + show_image(in, base); + cvWaitKey(10); + free_detections(dets, nboxes); + + + free_image(in_s); + free_image(in); + + + float curr = 0; + fps = .9*fps + .1*curr; + for(i = 0; i < skip; ++i){ + image in = get_image_from_stream(cap); + free_image(in); + } + } + #endif +} + +void extract_detector(char *datacfg, char *cfgfile, char *weightfile, int cam_index, const char *filename, int class, float thresh, int skip) +{ +#ifdef OPENCV + char *base = basecfg(cfgfile); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + + srand(2222222); + CvCapture * cap; + + int w = 1280; + int h = 720; + + if(filename){ + cap = cvCaptureFromFile(filename); + }else{ + cap = cvCaptureFromCAM(cam_index); + } + + if(w){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH, w); + } + if(h){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT, h); + } + + if(!cap) error("Couldn't connect to webcam.\n"); + cvNamedWindow(base, CV_WINDOW_NORMAL); + cvResizeWindow(base, 512, 512); + float fps = 0; + int i; + int count = 0; + float nms = .45; + + while(1){ + image in = get_image_from_stream(cap); + //image in_s = resize_image(in, net->w, net->h); + image in_s = letterbox_image(in, net->w, net->h); + layer l = net->layers[net->n-1]; + + show_image(in, base); + + int nboxes = 0; + float *X = in_s.data; + network_predict(net, X); + detection *dets = get_network_boxes(net, in.w, in.h, thresh, 0, 0, 1, &nboxes); + //if (nms) do_nms_obj(boxes, probs, l.w*l.h*l.n, l.classes, nms); + if (nms) do_nms_sort(dets, nboxes, l.classes, nms); + + for(i = 0; i < nboxes; ++i){ + if(dets[i].prob[class] > thresh){ + box b = dets[i].bbox; + int size = b.w*in.w > b.h*in.h ? b.w*in.w : b.h*in.h; + int dx = b.x*in.w-size/2.; + int dy = b.y*in.h-size/2.; + image bim = crop_image(in, dx, dy, size, size); + char buff[2048]; + sprintf(buff, "results/extract/%07d", count); + ++count; + save_image(bim, buff); + free_image(bim); + } + } + free_detections(dets, nboxes); + + + free_image(in_s); + free_image(in); + + + float curr = 0; + fps = .9*fps + .1*curr; + for(i = 0; i < skip; ++i){ + image in = get_image_from_stream(cap); + free_image(in); + } + } + #endif +} +*/ + +/* +void network_detect(network *net, image im, float thresh, float hier_thresh, float nms, detection *dets) +{ + network_predict_image(net, im); + layer l = net->layers[net->n-1]; + int nboxes = num_boxes(net); + fill_network_boxes(net, im.w, im.h, thresh, hier_thresh, 0, 0, dets); + if (nms) do_nms_sort(dets, nboxes, l.classes, nms); +} +*/ + +void run_detector(int argc, char **argv) +{ + char *prefix = find_char_arg(argc, argv, "-prefix", 0); + float thresh = find_float_arg(argc, argv, "-thresh", .5); + float hier_thresh = find_float_arg(argc, argv, "-hier", .5); + int cam_index = find_int_arg(argc, argv, "-c", 0); + int frame_skip = find_int_arg(argc, argv, "-s", 0); + int avg = find_int_arg(argc, argv, "-avg", 3); + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + char *outfile = find_char_arg(argc, argv, "-out", 0); + int *gpus = 0; + int gpu = 0; + int ngpus = 0; + if(gpu_list){ + printf("%s\n", gpu_list); + int len = strlen(gpu_list); + ngpus = 1; + int i; + for(i = 0; i < len; ++i){ + if (gpu_list[i] == ',') ++ngpus; + } + gpus = calloc(ngpus, sizeof(int)); + for(i = 0; i < ngpus; ++i){ + gpus[i] = atoi(gpu_list); + gpu_list = strchr(gpu_list, ',')+1; + } + } else { + gpu = gpu_index; + gpus = &gpu; + ngpus = 1; + } + + int clear = find_arg(argc, argv, "-clear"); + int fullscreen = find_arg(argc, argv, "-fullscreen"); + int width = find_int_arg(argc, argv, "-w", 0); + int height = find_int_arg(argc, argv, "-h", 0); + int fps = find_int_arg(argc, argv, "-fps", 0); + //int class = find_int_arg(argc, argv, "-class", 0); + + char *datacfg = argv[3]; + char *cfg = argv[4]; + char *weights = (argc > 5) ? argv[5] : 0; + char *filename = (argc > 6) ? argv[6]: 0; + if(0==strcmp(argv[2], "test")) test_detector(datacfg, cfg, weights, filename, thresh, hier_thresh, outfile, fullscreen); + else if(0==strcmp(argv[2], "train")) train_detector(datacfg, cfg, weights, gpus, ngpus, clear); + else if(0==strcmp(argv[2], "valid")) validate_detector(datacfg, cfg, weights, outfile); + else if(0==strcmp(argv[2], "valid2")) validate_detector_flip(datacfg, cfg, weights, outfile); + else if(0==strcmp(argv[2], "recall")) validate_detector_recall(cfg, weights); + else if(0==strcmp(argv[2], "demo")) { + list *options = read_data_cfg(datacfg); + int classes = option_find_int(options, "classes", 20); + char *name_list = option_find_str(options, "names", "data/names.list"); + char **names = get_labels(name_list); + demo(cfg, weights, thresh, cam_index, filename, names, classes, frame_skip, prefix, avg, hier_thresh, width, height, fps, fullscreen); + } + //else if(0==strcmp(argv[2], "extract")) extract_detector(datacfg, cfg, weights, cam_index, filename, class, thresh, frame_skip); + //else if(0==strcmp(argv[2], "censor")) censor_detector(datacfg, cfg, weights, cam_index, filename, class, thresh, frame_skip); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector.py" new file mode 100644 index 00000000..40bb365e --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/detector.py" @@ -0,0 +1,27 @@ +# Stupid python path shit. +# Instead just add darknet.py to somewhere in your python path +# OK actually that might not be a great idea, idk, work in progress +# Use at your own risk. or don't, i don't care + +import sys, os +sys.path.append(os.path.join(os.getcwd(),'python/')) + +import darknet as dn +import pdb + +dn.set_gpu(0) +net = dn.load_net("cfg/yolo-thor.cfg", "/home/pjreddie/backup/yolo-thor_final.weights", 0) +meta = dn.load_meta("cfg/thor.data") +r = dn.detect(net, meta, "data/bedroom.jpg") +print r + +# And then down here you could detect a lot more images like: +r = dn.detect(net, meta, "data/eagle.jpg") +print r +r = dn.detect(net, meta, "data/giraffe.jpg") +print r +r = dn.detect(net, meta, "data/horses.jpg") +print r +r = dn.detect(net, meta, "data/person.jpg") +print r + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/dice.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/dice.c" new file mode 100644 index 00000000..f56d76c0 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/dice.c" @@ -0,0 +1,116 @@ +#include "darknet.h" + +char *dice_labels[] = {"face1","face2","face3","face4","face5","face6"}; + +void train_dice(char *cfgfile, char *weightfile) +{ + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + char *backup_directory = "/home/pjreddie/backup/"; + printf("%s\n", base); + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay); + int imgs = 1024; + int i = *net.seen/imgs; + char **labels = dice_labels; + list *plist = get_paths("data/dice/dice.train.list"); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + clock_t time; + while(1){ + ++i; + time=clock(); + data train = load_data_old(paths, imgs, plist->size, labels, 6, net.w, net.h); + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + time=clock(); + float loss = train_network(net, train); + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%d: %f, %f avg, %lf seconds, %ld images\n", i, loss, avg_loss, sec(clock()-time), *net.seen); + free_data(train); + if((i % 100) == 0) net.learning_rate *= .1; + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, i); + save_weights(net, buff); + } + } +} + +void validate_dice(char *filename, char *weightfile) +{ + network net = parse_network_cfg(filename); + if(weightfile){ + load_weights(&net, weightfile); + } + srand(time(0)); + + char **labels = dice_labels; + list *plist = get_paths("data/dice/dice.val.list"); + + char **paths = (char **)list_to_array(plist); + int m = plist->size; + free_list(plist); + + data val = load_data_old(paths, m, 0, labels, 6, net.w, net.h); + float *acc = network_accuracies(net, val, 2); + printf("Validation Accuracy: %f, %d images\n", acc[0], m); + free_data(val); +} + +void test_dice(char *cfgfile, char *weightfile, char *filename) +{ + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + set_batch_network(&net, 1); + srand(2222222); + int i = 0; + char **names = dice_labels; + char buff[256]; + char *input = buff; + int indexes[6]; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, net.w, net.h); + float *X = im.data; + float *predictions = network_predict(net, X); + top_predictions(net, 6, indexes); + for(i = 0; i < 6; ++i){ + int index = indexes[i]; + printf("%s: %f\n", names[index], predictions[index]); + } + free_image(im); + if (filename) break; + } +} + +void run_dice(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5]: 0; + if(0==strcmp(argv[2], "test")) test_dice(cfg, weights, filename); + else if(0==strcmp(argv[2], "train")) train_dice(cfg, weights); + else if(0==strcmp(argv[2], "valid")) validate_dice(cfg, weights); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/go.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/go.c" new file mode 100644 index 00000000..688579dc --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/go.c" @@ -0,0 +1,1370 @@ +#include "darknet.h" + +#include +#include +#include + +int inverted = 1; +int noi = 1; +static const int nind = 10; +int legal_go(float *b, float *ko, int p, int r, int c); +int check_ko(float *x, float *ko); + +typedef struct { + char **data; + int n; +} moves; + +char *fgetgo(FILE *fp) +{ + if(feof(fp)) return 0; + size_t size = 96; + char *line = malloc(size*sizeof(char)); + if(size != fread(line, sizeof(char), size, fp)){ + free(line); + return 0; + } + + return line; +} + +moves load_go_moves(char *filename) +{ + moves m; + m.n = 128; + m.data = calloc(128, sizeof(char*)); + FILE *fp = fopen(filename, "rb"); + int count = 0; + char *line = 0; + while ((line = fgetgo(fp))) { + if (count >= m.n) { + m.n *= 2; + m.data = realloc(m.data, m.n*sizeof(char*)); + } + m.data[count] = line; + ++count; + } + printf("%d\n", count); + m.n = count; + m.data = realloc(m.data, count*sizeof(char*)); + return m; +} + +void string_to_board(char *s, float *board) +{ + int i, j; + memset(board, 0, 2*19*19*sizeof(float)); + int count = 0; + for(i = 0; i < 91; ++i){ + char c = s[i]; + for(j = 0; j < 4; ++j){ + int me = (c >> (2*j)) & 1; + int you = (c >> (2*j + 1)) & 1; + if (me) board[count] = 1; + else if (you) board[count + 19*19] = 1; + ++count; + if(count >= 19*19) break; + } + } +} + +void board_to_string(char *s, float *board) +{ + int i, j; + memset(s, 0, (19*19/4+1)*sizeof(char)); + int count = 0; + for(i = 0; i < 91; ++i){ + for(j = 0; j < 4; ++j){ + int me = (board[count] == 1); + int you = (board[count + 19*19] == 1); + if (me) s[i] = s[i] | (1<<(2*j)); + if (you) s[i] = s[i] | (1<<(2*j + 1)); + ++count; + if(count >= 19*19) break; + } + } +} + +static int occupied(float *b, int i) +{ + if (b[i]) return 1; + if (b[i+19*19]) return -1; + return 0; +} + +data random_go_moves(moves m, int n) +{ + data d = {0}; + d.X = make_matrix(n, 19*19*3); + d.y = make_matrix(n, 19*19+2); + int i, j; + for(i = 0; i < n; ++i){ + float *board = d.X.vals[i]; + float *label = d.y.vals[i]; + char *b = m.data[rand()%m.n]; + int player = b[0] - '0'; + int result = b[1] - '0'; + int row = b[2]; + int col = b[3]; + string_to_board(b+4, board); + if(player > 0) for(j = 0; j < 19*19; ++j) board[19*19*2 + j] = 1; + label[19*19+1] = (player==result); + if(row >= 19 || col >= 19){ + label[19*19] = 1; + } else { + label[col + 19*row] = 1; + if(occupied(board, col + 19*row)) printf("hey\n"); + } + + int flip = rand()%2; + int rotate = rand()%4; + image in = float_to_image(19, 19, 3, board); + image out = float_to_image(19, 19, 1, label); + if(flip){ + flip_image(in); + flip_image(out); + } + rotate_image_cw(in, rotate); + rotate_image_cw(out, rotate); + } + return d; +} + + +void train_go(char *cfgfile, char *weightfile, char *filename, int *gpus, int ngpus, int clear) +{ + int i; + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + printf("%d\n", ngpus); + network **nets = calloc(ngpus, sizeof(network*)); + + srand(time(0)); + int seed = rand(); + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + network *net = nets[0]; + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + + char *backup_directory = "/home/pjreddie/backup/"; + + char buff[256]; + moves m = load_go_moves(filename); + //moves m = load_go_moves("games.txt"); + + int N = m.n; + printf("Moves: %d\n", N); + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + double time=what_time_is_it_now(); + + data train = random_go_moves(m, net->batch*net->subdivisions*ngpus); + printf("Loaded: %lf seconds\n", what_time_is_it_now() - time); + time=what_time_is_it_now(); + + float loss = 0; +#ifdef GPU + if(ngpus == 1){ + loss = train_network(net, train); + } else { + loss = train_networks(nets, ngpus, train, 10); + } +#else + loss = train_network(net, train); +#endif + free_data(train); + + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.95 + loss*.05; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), what_time_is_it_now()-time, *net->seen); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory,base, epoch); + save_weights(net, buff); + + } + if(get_current_batch(net)%1000 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + if(get_current_batch(net)%10000 == 0){ + char buff[256]; + sprintf(buff, "%s/%s_%ld.backup",backup_directory,base,get_current_batch(net)); + save_weights(net, buff); + } + } + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + free_network(net); + free(base); +} + +static void propagate_liberty(float *board, int *lib, int *visited, int row, int col, int side) +{ + if (row < 0 || row > 18 || col < 0 || col > 18) return; + int index = row*19 + col; + if (occupied(board,index) != side) return; + if (visited[index]) return; + visited[index] = 1; + lib[index] += 1; + propagate_liberty(board, lib, visited, row+1, col, side); + propagate_liberty(board, lib, visited, row-1, col, side); + propagate_liberty(board, lib, visited, row, col+1, side); + propagate_liberty(board, lib, visited, row, col-1, side); +} + + +static int *calculate_liberties(float *board) +{ + int *lib = calloc(19*19, sizeof(int)); + int visited[19*19]; + int i, j; + for(j = 0; j < 19; ++j){ + for(i = 0; i < 19; ++i){ + memset(visited, 0, 19*19*sizeof(int)); + int index = j*19 + i; + if(!occupied(board,index)){ + if ((i > 0) && occupied(board,index - 1)) propagate_liberty(board, lib, visited, j, i-1, occupied(board,index-1)); + if ((i < 18) && occupied(board,index + 1)) propagate_liberty(board, lib, visited, j, i+1, occupied(board,index+1)); + if ((j > 0) && occupied(board,index - 19)) propagate_liberty(board, lib, visited, j-1, i, occupied(board,index-19)); + if ((j < 18) && occupied(board,index + 19)) propagate_liberty(board, lib, visited, j+1, i, occupied(board,index+19)); + } + } + } + return lib; +} + +void print_board(FILE *stream, float *board, int player, int *indexes) +{ + int i,j,n; + fprintf(stream, " "); + for(i = 0; i < 19; ++i){ + fprintf(stream, "%c ", 'A' + i + 1*(i > 7 && noi)); + } + fprintf(stream, "\n"); + for(j = 0; j < 19; ++j){ + fprintf(stream, "%2d", (inverted) ? 19-j : j+1); + for(i = 0; i < 19; ++i){ + int index = j*19 + i; + if(indexes){ + int found = 0; + for(n = 0; n < nind; ++n){ + if(index == indexes[n]){ + found = 1; + /* + if(n == 0) fprintf(stream, "\uff11"); + else if(n == 1) fprintf(stream, "\uff12"); + else if(n == 2) fprintf(stream, "\uff13"); + else if(n == 3) fprintf(stream, "\uff14"); + else if(n == 4) fprintf(stream, "\uff15"); + */ + fprintf(stream, " %d", n+1); + } + } + if(found) continue; + } + //if(board[index]*-swap > 0) fprintf(stream, "\u25C9 "); + //else if(board[index]*-swap < 0) fprintf(stream, "\u25EF "); + if (occupied(board, index) == player) fprintf(stream, " X"); + else if (occupied(board, index) ==-player) fprintf(stream, " O"); + else fprintf(stream, " ."); + } + fprintf(stream, "\n"); + } +} + +void flip_board(float *board) +{ + int i; + for(i = 0; i < 19*19; ++i){ + float swap = board[i]; + board[i] = board[i+19*19]; + board[i+19*19] = swap; + board[i+19*19*2] = 1-board[i+19*19*2]; + } +} + +float predict_move2(network *net, float *board, float *move, int multi) +{ + float *output = network_predict(net, board); + copy_cpu(19*19+1, output, 1, move, 1); + float result = output[19*19 + 1]; + int i; + if(multi){ + image bim = float_to_image(19, 19, 3, board); + for(i = 1; i < 8; ++i){ + rotate_image_cw(bim, i); + if(i >= 4) flip_image(bim); + + float *output = network_predict(net, board); + image oim = float_to_image(19, 19, 1, output); + result += output[19*19 + 1]; + + if(i >= 4) flip_image(oim); + rotate_image_cw(oim, -i); + + axpy_cpu(19*19+1, 1, output, 1, move, 1); + + if(i >= 4) flip_image(bim); + rotate_image_cw(bim, -i); + } + result = result/8; + scal_cpu(19*19+1, 1./8., move, 1); + } + for(i = 0; i < 19*19; ++i){ + if(board[i] || board[i+19*19]) move[i] = 0; + } + return result; +} + +static void remove_connected(float *b, int *lib, int p, int r, int c) +{ + if (r < 0 || r >= 19 || c < 0 || c >= 19) return; + if (occupied(b, r*19 + c) != p) return; + if (lib[r*19 + c] != 1) return; + b[r*19 + c] = 0; + b[19*19 + r*19 + c] = 0; + remove_connected(b, lib, p, r+1, c); + remove_connected(b, lib, p, r-1, c); + remove_connected(b, lib, p, r, c+1); + remove_connected(b, lib, p, r, c-1); +} + + +void move_go(float *b, int p, int r, int c) +{ + int *l = calculate_liberties(b); + if(p > 0) b[r*19 + c] = 1; + else b[19*19 + r*19 + c] = 1; + remove_connected(b, l, -p, r+1, c); + remove_connected(b, l, -p, r-1, c); + remove_connected(b, l, -p, r, c+1); + remove_connected(b, l, -p, r, c-1); + free(l); +} + +int compare_board(float *a, float *b) +{ + if(memcmp(a, b, 19*19*3*sizeof(float)) == 0) return 1; + return 0; +} + +typedef struct mcts_tree{ + float *board; + struct mcts_tree **children; + float *prior; + int *visit_count; + float *value; + float *mean; + float *prob; + int total_count; + float result; + int done; + int pass; +} mcts_tree; + +void free_mcts(mcts_tree *root) +{ + if(!root) return; + int i; + free(root->board); + for(i = 0; i < 19*19+1; ++i){ + if(root->children[i]) free_mcts(root->children[i]); + } + free(root->children); + free(root->prior); + free(root->visit_count); + free(root->value); + free(root->mean); + free(root->prob); + free(root); +} + +float *network_predict_rotations(network *net, float *next) +{ + int n = net->batch; + float *in = calloc(19*19*3*n, sizeof(float)); + image im = float_to_image(19, 19, 3, next); + int i,j; + int *inds = random_index_order(0, 8); + for(j = 0; j < n; ++j){ + i = inds[j]; + rotate_image_cw(im, i); + if(i >= 4) flip_image(im); + memcpy(in + 19*19*3*j, im.data, 19*19*3*sizeof(float)); + if(i >= 4) flip_image(im); + rotate_image_cw(im, -i); + } + float *pred = network_predict(net, in); + for(j = 0; j < n; ++j){ + i = inds[j]; + image im = float_to_image(19, 19, 1, pred + j*(19*19 + 2)); + if(i >= 4) flip_image(im); + rotate_image_cw(im, -i); + if(j > 0){ + axpy_cpu(19*19+2, 1, im.data, 1, pred, 1); + } + } + free(in); + free(inds); + scal_cpu(19*19+2, 1./n, pred, 1); + return pred; +} + +mcts_tree *expand(float *next, float *ko, network *net) +{ + mcts_tree *root = calloc(1, sizeof(mcts_tree)); + root->board = next; + root->children = calloc(19*19+1, sizeof(mcts_tree*)); + root->prior = calloc(19*19 + 1, sizeof(float)); + root->prob = calloc(19*19 + 1, sizeof(float)); + root->mean = calloc(19*19 + 1, sizeof(float)); + root->value = calloc(19*19 + 1, sizeof(float)); + root->visit_count = calloc(19*19 + 1, sizeof(int)); + root->total_count = 1; + int i; + float *pred = network_predict_rotations(net, next); + copy_cpu(19*19+1, pred, 1, root->prior, 1); + float val = 2*pred[19*19 + 1] - 1; + root->result = val; + for(i = 0; i < 19*19+1; ++i) { + root->visit_count[i] = 0; + root->value[i] = 0; + root->mean[i] = val; + if(i < 19*19 && occupied(next, i)){ + root->value[i] = -1; + root->mean[i] = -1; + root->prior[i] = 0; + } + } + //print_board(stderr, next, flip?-1:1, 0); + return root; +} + +float *copy_board(float *board) +{ + float *next = calloc(19*19*3, sizeof(float)); + copy_cpu(19*19*3, board, 1, next, 1); + return next; +} + +float select_mcts(mcts_tree *root, network *net, float *prev, float cpuct) +{ + if(root->done) return -root->result; + int i; + float max = -1000; + int max_i = 0; + for(i = 0; i < 19*19+1; ++i){ + root->prob[i] = root->mean[i] + cpuct*root->prior[i] * sqrt(root->total_count) / (1. + root->visit_count[i]); + if(root->prob[i] > max){ + max = root->prob[i]; + max_i = i; + } + } + float val; + i = max_i; + root->visit_count[i]++; + root->total_count++; + if (root->children[i]) { + val = select_mcts(root->children[i], net, root->board, cpuct); + } else { + if(max_i < 19*19 && !legal_go(root->board, prev, 1, max_i/19, max_i%19)) { + root->mean[i] = -1; + root->value[i] = -1; + root->prior[i] = 0; + --root->total_count; + return select_mcts(root, net, prev, cpuct); + //printf("Detected ko\n"); + //getchar(); + } else { + float *next = copy_board(root->board); + if (max_i < 19*19) { + move_go(next, 1, max_i / 19, max_i % 19); + } + flip_board(next); + root->children[i] = expand(next, root->board, net); + val = -root->children[i]->result; + if(max_i == 19*19){ + root->children[i]->pass = 1; + if (root->pass){ + root->children[i]->done = 1; + } + } + } + } + root->value[i] += val; + root->mean[i] = root->value[i]/root->visit_count[i]; + return -val; +} + +mcts_tree *run_mcts(mcts_tree *tree, network *net, float *board, float *ko, int player, int n, float cpuct, float secs) +{ + int i; + double t = what_time_is_it_now(); + if(player < 0) flip_board(board); + if(!tree) tree = expand(copy_board(board), ko, net); + assert(compare_board(tree->board, board)); + for(i = 0; i < n; ++i){ + if (secs > 0 && (what_time_is_it_now() - t) > secs) break; + int max_i = max_int_index(tree->visit_count, 19*19+1); + if (tree->visit_count[max_i] >= n) break; + select_mcts(tree, net, ko, cpuct); + } + if(player < 0) flip_board(board); + //fprintf(stderr, "%f Seconds\n", what_time_is_it_now() - t); + return tree; +} + +mcts_tree *move_mcts(mcts_tree *tree, int index) +{ + if(index < 0 || index > 19*19 || !tree || !tree->children[index]) { + free_mcts(tree); + tree = 0; + } else { + mcts_tree *swap = tree; + tree = tree->children[index]; + swap->children[index] = 0; + free_mcts(swap); + } + return tree; +} + +typedef struct { + float value; + float mcts; + int row; + int col; +} move; + +move pick_move(mcts_tree *tree, float temp, int player) +{ + int i; + float probs[19*19+1] = {0}; + move m = {0}; + double sum = 0; + /* + for(i = 0; i < 19*19+1; ++i){ + probs[i] = tree->visit_count[i]; + } + */ + //softmax(probs, 19*19+1, temp, 1, probs); + for(i = 0; i < 19*19+1; ++i){ + sum += pow(tree->visit_count[i], 1./temp); + } + for(i = 0; i < 19*19+1; ++i){ + probs[i] = pow(tree->visit_count[i], 1./temp) / sum; + } + + int index = sample_array(probs, 19*19+1); + m.row = index / 19; + m.col = index % 19; + m.value = (tree->result+1.)/2.; + m.mcts = (tree->mean[index]+1.)/2.; + + int indexes[nind]; + top_k(probs, 19*19+1, nind, indexes); + print_board(stderr, tree->board, player, indexes); + + fprintf(stderr, "%d %d, Result: %f, Prior: %f, Prob: %f, Mean Value: %f, Child Result: %f, Visited: %d\n", index/19, index%19, tree->result, tree->prior[index], probs[index], tree->mean[index], (tree->children[index])?tree->children[index]->result:0, tree->visit_count[index]); + int ind = max_index(probs, 19*19+1); + fprintf(stderr, "%d %d, Result: %f, Prior: %f, Prob: %f, Mean Value: %f, Child Result: %f, Visited: %d\n", ind/19, ind%19, tree->result, tree->prior[ind], probs[ind], tree->mean[ind], (tree->children[ind])?tree->children[ind]->result:0, tree->visit_count[ind]); + ind = max_index(tree->prior, 19*19+1); + fprintf(stderr, "%d %d, Result: %f, Prior: %f, Prob: %f, Mean Value: %f, Child Result: %f, Visited: %d\n", ind/19, ind%19, tree->result, tree->prior[ind], probs[ind], tree->mean[ind], (tree->children[ind])?tree->children[ind]->result:0, tree->visit_count[ind]); + return m; +} + +/* + float predict_move(network *net, float *board, float *move, int multi, float *ko, float temp) + { + + int i; + + int max_v = 0; + int max_i = 0; + for(i = 0; i < 19*19+1; ++i){ + if(root->visit_count[i] > max_v){ + max_v = root->visit_count[i]; + max_i = i; + } + } + fprintf(stderr, "%f Seconds\n", what_time_is_it_now() - t); + int ind = max_index(root->mean, 19*19+1); + fprintf(stderr, "%d %d, Result: %f, Prior: %f, Prob: %f, Mean Value: %f, Child Result: %f, Visited: %d\n", max_i/19, max_i%19, root->result, root->prior[max_i], root->prob[max_i], root->mean[max_i], (root->children[max_i])?root->children[max_i]->result:0, root->visit_count[max_i]); + fprintf(stderr, "%d %d, Result: %f, Prior: %f, Prob: %f, Mean Value: %f, Child Result: %f, Visited: %d\n", ind/19, ind%19, root->result, root->prior[ind], root->prob[ind], root->mean[ind], (root->children[ind])?root->children[ind]->result:0, root->visit_count[ind]); + ind = max_index(root->prior, 19*19+1); + fprintf(stderr, "%d %d, Result: %f, Prior: %f, Prob: %f, Mean Value: %f, Child Result: %f, Visited: %d\n", ind/19, ind%19, root->result, root->prior[ind], root->prob[ind], root->mean[ind], (root->children[ind])?root->children[ind]->result:0, root->visit_count[ind]); + if(root->result < -.9 && root->mean[max_i] < -.9) return -1000.f; + + float val = root->result; + free_mcts(root); + return val; + } + */ + +static int makes_safe_go(float *b, int *lib, int p, int r, int c){ + if (r < 0 || r >= 19 || c < 0 || c >= 19) return 0; + if (occupied(b,r*19 + c) == -p){ + if (lib[r*19 + c] > 1) return 0; + else return 1; + } + if (!occupied(b,r*19 + c)) return 1; + if (lib[r*19 + c] > 1) return 1; + return 0; +} + +int suicide_go(float *b, int p, int r, int c) +{ + int *l = calculate_liberties(b); + int safe = 0; + safe = safe || makes_safe_go(b, l, p, r+1, c); + safe = safe || makes_safe_go(b, l, p, r-1, c); + safe = safe || makes_safe_go(b, l, p, r, c+1); + safe = safe || makes_safe_go(b, l, p, r, c-1); + free(l); + return !safe; +} + +int check_ko(float *x, float *ko) +{ + if(!ko) return 0; + float curr[19*19*3]; + copy_cpu(19*19*3, x, 1, curr, 1); + if(curr[19*19*2] != ko[19*19*2]) flip_board(curr); + if(compare_board(curr, ko)) return 1; + return 0; +} + +int legal_go(float *b, float *ko, int p, int r, int c) +{ + if (occupied(b, r*19+c)) return 0; + float curr[19*19*3]; + copy_cpu(19*19*3, b, 1, curr, 1); + move_go(curr, p, r, c); + if(check_ko(curr, ko)) return 0; + if(suicide_go(b, p, r, c)) return 0; + return 1; +} + +/* + move generate_move(mcts_tree *root, network *net, int player, float *board, int multi, float temp, float *ko, int print) + { + move m = {0}; +//root = run_mcts(tree, network *net, float *board, float *ko, int n, float cpuct) +int i, j; +int empty = 1; +for(i = 0; i < 19*19; ++i){ +if (occupied(board, i)) { +empty = 0; +break; +} +} +if(empty) { +m.value = .5; +m.mcts = .5; +m.row = 3; +m.col = 15; +return m; +} + +float move[362]; +if (player < 0) flip_board(board); +float result = predict_move(net, board, move, multi, ko, temp); +if (player < 0) flip_board(board); +if(result == -1000.f) return -2; + +for(i = 0; i < 19; ++i){ +for(j = 0; j < 19; ++j){ +if (!legal_go(board, ko, player, i, j)) move[i*19 + j] = 0; +} +} + +int indexes[nind]; +top_k(move, 19*19+1, nind, indexes); + + +int max = max_index(move, 19*19+1); +int row = max / 19; +int col = max % 19; +int index = sample_array(move, 19*19+1); + +if(print){ +top_k(move, 19*19+1, nind, indexes); +for(i = 0; i < nind; ++i){ +if (!move[indexes[i]]) indexes[i] = -1; +} +print_board(stderr, board, 1, indexes); +fprintf(stderr, "%s To Move\n", player > 0 ? "X" : "O"); +fprintf(stderr, "%.2f%% Win Chance\n", (result+1)/2*100); +for(i = 0; i < nind; ++i){ +int index = indexes[i]; +int row = index / 19; +int col = index % 19; +if(row == 19){ +fprintf(stderr, "%d: Pass, %.2f%%\n", i+1, move[index]*100); +} else { +fprintf(stderr, "%d: %c %d, %.2f%%\n", i+1, col + 'A' + 1*(col > 7 && noi), (inverted)?19 - row : row+1, move[index]*100); +} +} +} +if (row == 19) return -1; + +if (suicide_go(board, player, row, col)){ +return -1; +} + +if (suicide_go(board, player, index/19, index%19)){ +index = max; +} +if (index == 19*19) return -1; +return index; +} +*/ + +void valid_go(char *cfgfile, char *weightfile, int multi, char *filename) +{ + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + + float *board = calloc(19*19*3, sizeof(float)); + float *move = calloc(19*19+2, sizeof(float)); + // moves m = load_go_moves("/home/pjreddie/backup/go.test"); + moves m = load_go_moves(filename); + + int N = m.n; + int i,j; + int correct = 0; + for (i = 0; i 0) for(j = 0; j < 19*19; ++j) board[19*19*2 + j] = 1; + predict_move2(net, board, move, multi); + int index = max_index(move, 19*19+1); + if(index == truth) ++correct; + printf("%d Accuracy %f\n", i, (float) correct/(i+1)); + } +} + +int print_game(float *board, FILE *fp) +{ + int i, j; + int count = 3; + fprintf(fp, "komi 6.5\n"); + fprintf(fp, "boardsize 19\n"); + fprintf(fp, "clear_board\n"); + for(j = 0; j < 19; ++j){ + for(i = 0; i < 19; ++i){ + if(occupied(board,j*19 + i) == 1) fprintf(fp, "play black %c%d\n", 'A'+i+(i>=8), 19-j); + if(occupied(board,j*19 + i) == -1) fprintf(fp, "play white %c%d\n", 'A'+i+(i>=8), 19-j); + if(occupied(board,j*19 + i)) ++count; + } + } + return count; +} + + +int stdin_ready() +{ + fd_set readfds; + FD_ZERO(&readfds); + + struct timeval timeout; + timeout.tv_sec = 0; + timeout.tv_usec = 0; + FD_SET(STDIN_FILENO, &readfds); + + if (select(1, &readfds, NULL, NULL, &timeout)){ + return 1; + } + return 0; +} + +mcts_tree *ponder(mcts_tree *tree, network *net, float *b, float *ko, int player, float cpuct) +{ + double t = what_time_is_it_now(); + int count = 0; + if (tree) count = tree->total_count; + while(!stdin_ready()){ + if (what_time_is_it_now() - t > 120) break; + tree = run_mcts(tree, net, b, ko, player, 100000, cpuct, .1); + } + fprintf(stderr, "Pondered %d moves...\n", tree->total_count - count); + return tree; +} + +void engine_go(char *filename, char *weightfile, int mcts_iters, float secs, float temp, float cpuct, int anon, int resign) +{ + mcts_tree *root = 0; + network *net = load_network(filename, weightfile, 0); + set_batch_network(net, 1); + srand(time(0)); + float *board = calloc(19*19*3, sizeof(float)); + flip_board(board); + float *one = calloc(19*19*3, sizeof(float)); + float *two = calloc(19*19*3, sizeof(float)); + int ponder_player = 0; + int passed = 0; + int move_num = 0; + int main_time = 0; + int byo_yomi_time = 0; + int byo_yomi_stones = 0; + int black_time_left = 0; + int black_stones_left = 0; + int white_time_left = 0; + int white_stones_left = 0; + float orig_time = secs; + int old_ponder = 0; + while(1){ + if(ponder_player){ + root = ponder(root, net, board, two, ponder_player, cpuct); + } + old_ponder = ponder_player; + ponder_player = 0; + char buff[256]; + int id = 0; + int has_id = (scanf("%d", &id) == 1); + scanf("%s", buff); + if (feof(stdin)) break; + fprintf(stderr, "%s\n", buff); + char ids[256]; + sprintf(ids, "%d", id); + //fprintf(stderr, "%s\n", buff); + if (!has_id) ids[0] = 0; + if (!strcmp(buff, "protocol_version")){ + printf("=%s 2\n\n", ids); + } else if (!strcmp(buff, "name")){ + if(anon){ + printf("=%s The Fool!\n\n", ids); + }else{ + printf("=%s DarkGo\n\n", ids); + } + } else if (!strcmp(buff, "time_settings")){ + ponder_player = old_ponder; + scanf("%d %d %d", &main_time, &byo_yomi_time, &byo_yomi_stones); + printf("=%s \n\n", ids); + } else if (!strcmp(buff, "time_left")){ + ponder_player = old_ponder; + char color[256]; + int time = 0, stones = 0; + scanf("%s %d %d", color, &time, &stones); + if (color[0] == 'b' || color[0] == 'B'){ + black_time_left = time; + black_stones_left = stones; + } else { + white_time_left = time; + white_stones_left = stones; + } + printf("=%s \n\n", ids); + } else if (!strcmp(buff, "version")){ + if(anon){ + printf("=%s :-DDDD\n\n", ids); + }else { + printf("=%s 1.0. Want more DarkGo? You can find me on OGS, unlimited games, no waiting! https://online-go.com/user/view/434218\n\n", ids); + } + } else if (!strcmp(buff, "known_command")){ + char comm[256]; + scanf("%s", comm); + int known = (!strcmp(comm, "protocol_version") || + !strcmp(comm, "name") || + !strcmp(comm, "version") || + !strcmp(comm, "known_command") || + !strcmp(comm, "list_commands") || + !strcmp(comm, "quit") || + !strcmp(comm, "boardsize") || + !strcmp(comm, "clear_board") || + !strcmp(comm, "komi") || + !strcmp(comm, "final_status_list") || + !strcmp(comm, "play") || + !strcmp(comm, "genmove_white") || + !strcmp(comm, "genmove_black") || + !strcmp(comm, "fixed_handicap") || + !strcmp(comm, "genmove")); + if(known) printf("=%s true\n\n", ids); + else printf("=%s false\n\n", ids); + } else if (!strcmp(buff, "list_commands")){ + printf("=%s protocol_version\nshowboard\nname\nversion\nknown_command\nlist_commands\nquit\nboardsize\nclear_board\nkomi\nplay\ngenmove_black\ngenmove_white\ngenmove\nfinal_status_list\nfixed_handicap\n\n", ids); + } else if (!strcmp(buff, "quit")){ + break; + } else if (!strcmp(buff, "boardsize")){ + int boardsize = 0; + scanf("%d", &boardsize); + //fprintf(stderr, "%d\n", boardsize); + if(boardsize != 19){ + printf("?%s unacceptable size\n\n", ids); + } else { + root = move_mcts(root, -1); + memset(board, 0, 3*19*19*sizeof(float)); + flip_board(board); + move_num = 0; + printf("=%s \n\n", ids); + } + } else if (!strcmp(buff, "fixed_handicap")){ + int handicap = 0; + scanf("%d", &handicap); + int indexes[] = {72, 288, 300, 60, 180, 174, 186, 66, 294}; + int i; + for(i = 0; i < handicap; ++i){ + board[indexes[i]] = 1; + ++move_num; + } + root = move_mcts(root, -1); + } else if (!strcmp(buff, "clear_board")){ + passed = 0; + memset(board, 0, 3*19*19*sizeof(float)); + flip_board(board); + move_num = 0; + root = move_mcts(root, -1); + printf("=%s \n\n", ids); + } else if (!strcmp(buff, "komi")){ + float komi = 0; + scanf("%f", &komi); + printf("=%s \n\n", ids); + } else if (!strcmp(buff, "showboard")){ + printf("=%s \n", ids); + print_board(stdout, board, 1, 0); + printf("\n"); + } else if (!strcmp(buff, "play") || !strcmp(buff, "black") || !strcmp(buff, "white")){ + ++move_num; + char color[256]; + if(!strcmp(buff, "play")) + { + scanf("%s ", color); + } else { + scanf(" "); + color[0] = buff[0]; + } + char c; + int r; + int count = scanf("%c%d", &c, &r); + int player = (color[0] == 'b' || color[0] == 'B') ? 1 : -1; + if((c == 'p' || c == 'P') && count < 2) { + passed = 1; + printf("=%s \n\n", ids); + char *line = fgetl(stdin); + free(line); + fflush(stdout); + fflush(stderr); + root = move_mcts(root, 19*19); + continue; + } else { + passed = 0; + } + if(c >= 'A' && c <= 'Z') c = c - 'A'; + if(c >= 'a' && c <= 'z') c = c - 'a'; + if(c >= 8) --c; + r = 19 - r; + fprintf(stderr, "move: %d %d\n", r, c); + + float *swap = two; + two = one; + one = swap; + move_go(board, player, r, c); + copy_cpu(19*19*3, board, 1, one, 1); + if(root) fprintf(stderr, "Prior: %f\n", root->prior[r*19 + c]); + if(root) fprintf(stderr, "Mean: %f\n", root->mean[r*19 + c]); + if(root) fprintf(stderr, "Result: %f\n", root->result); + root = move_mcts(root, r*19 + c); + if(root) fprintf(stderr, "Visited: %d\n", root->total_count); + else fprintf(stderr, "NOT VISITED\n"); + + printf("=%s \n\n", ids); + //print_board(stderr, board, 1, 0); + } else if (!strcmp(buff, "genmove") || !strcmp(buff, "genmove_black") || !strcmp(buff, "genmove_white")){ + ++move_num; + int player = 0; + if(!strcmp(buff, "genmove")){ + char color[256]; + scanf("%s", color); + player = (color[0] == 'b' || color[0] == 'B') ? 1 : -1; + } else if (!strcmp(buff, "genmove_black")){ + player = 1; + } else { + player = -1; + } + if(player > 0){ + if(black_time_left <= 30) secs = 2.5; + else secs = orig_time; + } else { + if(white_time_left <= 30) secs = 2.5; + else secs = orig_time; + } + ponder_player = -player; + + //tree = generate_move(net, player, board, multi, .1, two, 1); + double t = what_time_is_it_now(); + root = run_mcts(root, net, board, two, player, mcts_iters, cpuct, secs); + fprintf(stderr, "%f Seconds\n", what_time_is_it_now() - t); + move m = pick_move(root, temp, player); + root = move_mcts(root, m.row*19 + m.col); + + + if(move_num > resign && m.value < .1 && m.mcts < .1){ + printf("=%s resign\n\n", ids); + } else if(m.row == 19){ + printf("=%s pass\n\n", ids); + passed = 0; + } else { + int row = m.row; + int col = m.col; + + float *swap = two; + two = one; + one = swap; + + move_go(board, player, row, col); + copy_cpu(19*19*3, board, 1, one, 1); + row = 19 - row; + if (col >= 8) ++col; + printf("=%s %c%d\n\n", ids, 'A' + col, row); + } + + } else if (!strcmp(buff, "p")){ + //print_board(board, 1, 0); + } else if (!strcmp(buff, "final_status_list")){ + char type[256]; + scanf("%s", type); + fprintf(stderr, "final_status\n"); + char *line = fgetl(stdin); + free(line); + if(type[0] == 'd' || type[0] == 'D'){ + int i; + FILE *f = fopen("game.txt", "w"); + int count = print_game(board, f); + fprintf(f, "%s final_status_list dead\n", ids); + fclose(f); + FILE *p = popen("./gnugo --mode gtp < game.txt", "r"); + for(i = 0; i < count; ++i){ + free(fgetl(p)); + free(fgetl(p)); + } + char *l = 0; + while((l = fgetl(p))){ + printf("%s\n", l); + free(l); + } + } else { + printf("?%s unknown command\n\n", ids); + } + } else if (!strcmp(buff, "kgs-genmove_cleanup")){ + char type[256]; + scanf("%s", type); + fprintf(stderr, "kgs-genmove_cleanup\n"); + char *line = fgetl(stdin); + free(line); + int i; + FILE *f = fopen("game.txt", "w"); + int count = print_game(board, f); + fprintf(f, "%s kgs-genmove_cleanup %s\n", ids, type); + fclose(f); + FILE *p = popen("./gnugo --mode gtp < game.txt", "r"); + for(i = 0; i < count; ++i){ + free(fgetl(p)); + free(fgetl(p)); + } + char *l = 0; + while((l = fgetl(p))){ + printf("%s\n", l); + free(l); + } + } else { + char *line = fgetl(stdin); + free(line); + printf("?%s unknown command\n\n", ids); + } + fflush(stdout); + fflush(stderr); + } + printf("%d %d %d\n",passed, black_stones_left, white_stones_left); +} + +void test_go(char *cfg, char *weights, int multi) +{ + int i; + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + srand(time(0)); + float *board = calloc(19*19*3, sizeof(float)); + flip_board(board); + float *move = calloc(19*19+1, sizeof(float)); + int color = 1; + while(1){ + float result = predict_move2(net, board, move, multi); + printf("%.2f%% Win Chance\n", (result+1)/2*100); + + int indexes[nind]; + int row, col; + top_k(move, 19*19+1, nind, indexes); + print_board(stderr, board, color, indexes); + for(i = 0; i < nind; ++i){ + int index = indexes[i]; + row = index / 19; + col = index % 19; + if(row == 19){ + printf("%d: Pass, %.2f%%\n", i+1, move[index]*100); + } else { + printf("%d: %c %d, %.2f%%\n", i+1, col + 'A' + 1*(col > 7 && noi), (inverted)?19 - row : row+1, move[index]*100); + } + } + //if(color == 1) printf("\u25EF Enter move: "); + //else printf("\u25C9 Enter move: "); + if(color == 1) printf("X Enter move: "); + else printf("O Enter move: "); + + char c; + char *line = fgetl(stdin); + int picked = 1; + int dnum = sscanf(line, "%d", &picked); + int cnum = sscanf(line, "%c", &c); + if (strlen(line) == 0 || dnum) { + --picked; + if (picked < nind){ + int index = indexes[picked]; + row = index / 19; + col = index % 19; + if(row < 19){ + move_go(board, 1, row, col); + } + } + } else if (cnum){ + if (c <= 'T' && c >= 'A'){ + int num = sscanf(line, "%c %d", &c, &row); + row = (inverted)?19 - row : row-1; + col = c - 'A'; + if (col > 7 && noi) col -= 1; + if (num == 2) move_go(board, 1, row, col); + } else if (c == 'p') { + // Pass + } else if(c=='b' || c == 'w'){ + char g; + int num = sscanf(line, "%c %c %d", &g, &c, &row); + row = (inverted)?19 - row : row-1; + col = c - 'A'; + if (col > 7 && noi) col -= 1; + if (num == 3) { + int mc = (g == 'b') ? 1 : -1; + if (mc == color) { + board[row*19 + col] = 1; + } else { + board[19*19 + row*19 + col] = 1; + } + } + } else if(c == 'c'){ + char g; + int num = sscanf(line, "%c %c %d", &g, &c, &row); + row = (inverted)?19 - row : row-1; + col = c - 'A'; + if (col > 7 && noi) col -= 1; + if (num == 3) { + board[row*19 + col] = 0; + board[19*19 + row*19 + col] = 0; + } + } + } + free(line); + flip_board(board); + color = -color; + } +} + +float score_game(float *board) +{ + int i; + FILE *f = fopen("game.txt", "w"); + int count = print_game(board, f); + fprintf(f, "final_score\n"); + fclose(f); + FILE *p = popen("./gnugo --mode gtp < game.txt", "r"); + for(i = 0; i < count; ++i){ + free(fgetl(p)); + free(fgetl(p)); + } + char *l = 0; + float score = 0; + char player = 0; + while((l = fgetl(p))){ + fprintf(stderr, "%s \t", l); + int n = sscanf(l, "= %c+%f", &player, &score); + free(l); + if (n == 2) break; + } + if(player == 'W') score = -score; + pclose(p); + return score; +} + +void self_go(char *filename, char *weightfile, char *f2, char *w2, int multi) +{ + mcts_tree *tree1 = 0; + mcts_tree *tree2 = 0; + network *net = load_network(filename, weightfile, 0); + //set_batch_network(net, 1); + + network *net2; + if (f2) { + net2 = parse_network_cfg(f2); + if(w2){ + load_weights(net2, w2); + } + } else { + net2 = calloc(1, sizeof(network)); + *net2 = *net; + } + srand(time(0)); + char boards[600][93]; + int count = 0; + //set_batch_network(net, 1); + //set_batch_network(net2, 1); + float *board = calloc(19*19*3, sizeof(float)); + flip_board(board); + float *one = calloc(19*19*3, sizeof(float)); + float *two = calloc(19*19*3, sizeof(float)); + int done = 0; + int player = 1; + int p1 = 0; + int p2 = 0; + int total = 0; + float temp = .1; + int mcts_iters = 500; + float cpuct = 5; + while(1){ + if (done){ + tree1 = move_mcts(tree1, -1); + tree2 = move_mcts(tree2, -1); + float score = score_game(board); + if((score > 0) == (total%2==0)) ++p1; + else ++p2; + ++total; + fprintf(stderr, "Total: %d, Player 1: %f, Player 2: %f\n", total, (float)p1/total, (float)p2/total); + sleep(1); + /* + int i = (score > 0)? 0 : 1; + int j; + for(; i < count; i += 2){ + for(j = 0; j < 93; ++j){ + printf("%c", boards[i][j]); + } + printf("\n"); + } + */ + memset(board, 0, 3*19*19*sizeof(float)); + flip_board(board); + player = 1; + done = 0; + count = 0; + fflush(stdout); + fflush(stderr); + } + //print_board(stderr, board, 1, 0); + //sleep(1); + + if ((total%2==0) == (player==1)){ + //mcts_iters = 4500; + cpuct = 5; + } else { + //mcts_iters = 500; + cpuct = 1; + } + network *use = ((total%2==0) == (player==1)) ? net : net2; + mcts_tree *t = ((total%2==0) == (player==1)) ? tree1 : tree2; + t = run_mcts(t, use, board, two, player, mcts_iters, cpuct, 0); + move m = pick_move(t, temp, player); + if(((total%2==0) == (player==1))) tree1 = t; + else tree2 = t; + + tree1 = move_mcts(tree1, m.row*19 + m.col); + tree2 = move_mcts(tree2, m.row*19 + m.col); + + if(m.row == 19){ + done = 1; + continue; + } + int row = m.row; + int col = m.col; + + float *swap = two; + two = one; + one = swap; + + if(player < 0) flip_board(board); + boards[count][0] = row; + boards[count][1] = col; + board_to_string(boards[count] + 2, board); + if(player < 0) flip_board(board); + ++count; + + move_go(board, player, row, col); + copy_cpu(19*19*3, board, 1, one, 1); + + player = -player; + } +} + +void run_go(int argc, char **argv) +{ + //boards_go(); + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + int *gpus = 0; + int gpu = 0; + int ngpus = 0; + if(gpu_list){ + printf("%s\n", gpu_list); + int len = strlen(gpu_list); + ngpus = 1; + int i; + for(i = 0; i < len; ++i){ + if (gpu_list[i] == ',') ++ngpus; + } + gpus = calloc(ngpus, sizeof(int)); + for(i = 0; i < ngpus; ++i){ + gpus[i] = atoi(gpu_list); + gpu_list = strchr(gpu_list, ',')+1; + } + } else { + gpu = gpu_index; + gpus = &gpu; + ngpus = 1; + } + int clear = find_arg(argc, argv, "-clear"); + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *c2 = (argc > 5) ? argv[5] : 0; + char *w2 = (argc > 6) ? argv[6] : 0; + int multi = find_arg(argc, argv, "-multi"); + int anon = find_arg(argc, argv, "-anon"); + int iters = find_int_arg(argc, argv, "-iters", 500); + int resign = find_int_arg(argc, argv, "-resign", 175); + float cpuct = find_float_arg(argc, argv, "-cpuct", 5); + float temp = find_float_arg(argc, argv, "-temp", .1); + float time = find_float_arg(argc, argv, "-time", 0); + if(0==strcmp(argv[2], "train")) train_go(cfg, weights, c2, gpus, ngpus, clear); + else if(0==strcmp(argv[2], "valid")) valid_go(cfg, weights, multi, c2); + else if(0==strcmp(argv[2], "self")) self_go(cfg, weights, c2, w2, multi); + else if(0==strcmp(argv[2], "test")) test_go(cfg, weights, multi); + else if(0==strcmp(argv[2], "engine")) engine_go(cfg, weights, iters, time, temp, cpuct, anon, resign); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/instance-segmenter.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/instance-segmenter.c" new file mode 100644 index 00000000..664e7142 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/instance-segmenter.c" @@ -0,0 +1,267 @@ +#include "darknet.h" +#include +#include + +void normalize_image2(image p); +void train_isegmenter(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear, int display) +{ + int i; + + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + printf("%d\n", ngpus); + network **nets = calloc(ngpus, sizeof(network*)); + + srand(time(0)); + int seed = rand(); + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + srand(time(0)); + network *net = nets[0]; + image pred = get_network_image(net); + + image embed = pred; + embed.c = 3; + embed.data += embed.w*embed.h*80; + + int div = net->w/pred.w; + assert(pred.w * div == net->w); + assert(pred.h * div == net->h); + + int imgs = net->batch * net->subdivisions * ngpus; + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + list *options = read_data_cfg(datacfg); + + char *backup_directory = option_find_str(options, "backup", "/backup/"); + char *train_list = option_find_str(options, "train", "data/train.list"); + + list *plist = get_paths(train_list); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + int N = plist->size; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.threads = 32; + args.scale = div; + args.num_boxes = 90; + + args.min = net->min_crop; + args.max = net->max_crop; + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + args.size = net->w; + args.classes = 80; + + args.paths = paths; + args.n = imgs; + args.m = N; + args.type = ISEG_DATA; + + data train; + data buffer; + pthread_t load_thread; + args.d = &buffer; + load_thread = load_data(args); + + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + double time = what_time_is_it_now(); + + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data(args); + + printf("Loaded: %lf seconds\n", what_time_is_it_now()-time); + time = what_time_is_it_now(); + + float loss = 0; +#ifdef GPU + if(ngpus == 1){ + loss = train_network(net, train); + } else { + loss = train_networks(nets, ngpus, train, 4); + } +#else + loss = train_network(net, train); +#endif + if(display){ + image tr = float_to_image(net->w/div, net->h/div, 80, train.y.vals[net->batch*(net->subdivisions-1)]); + image im = float_to_image(net->w, net->h, net->c, train.X.vals[net->batch*(net->subdivisions-1)]); + pred.c = 80; + image mask = mask_to_rgb(tr); + image prmask = mask_to_rgb(pred); + image ecopy = copy_image(embed); + normalize_image2(ecopy); + show_image(ecopy, "embed", 1); + free_image(ecopy); + + show_image(im, "input", 1); + show_image(prmask, "pred", 1); + show_image(mask, "truth", 100); + free_image(mask); + free_image(prmask); + } + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), what_time_is_it_now()-time, *net->seen); + free_data(train); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + free_network(net); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void predict_isegmenter(char *datafile, char *cfg, char *weights, char *filename) +{ + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image sized = letterbox_image(im, net->w, net->h); + + float *X = sized.data; + time=clock(); + float *predictions = network_predict(net, X); + image pred = get_network_image(net); + image prmask = mask_to_rgb(pred); + printf("Predicted: %f\n", predictions[0]); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + show_image(sized, "orig", 1); + show_image(prmask, "pred", 0); + free_image(im); + free_image(sized); + free_image(prmask); + if (filename) break; + } +} + + +void demo_isegmenter(char *datacfg, char *cfg, char *weights, int cam_index, const char *filename) +{ +#ifdef OPENCV + printf("Classifier Demo\n"); + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + + srand(2222222); + void * cap = open_video_stream(filename, cam_index, 0,0,0); + + if(!cap) error("Couldn't connect to webcam.\n"); + float fps = 0; + + while(1){ + struct timeval tval_before, tval_after, tval_result; + gettimeofday(&tval_before, NULL); + + image in = get_image_from_stream(cap); + image in_s = letterbox_image(in, net->w, net->h); + + network_predict(net, in_s.data); + + printf("\033[2J"); + printf("\033[1;1H"); + printf("\nFPS:%.0f\n",fps); + + image pred = get_network_image(net); + image prmask = mask_to_rgb(pred); + show_image(prmask, "Segmenter", 10); + + free_image(in_s); + free_image(in); + free_image(prmask); + + gettimeofday(&tval_after, NULL); + timersub(&tval_after, &tval_before, &tval_result); + float curr = 1000000.f/((long int)tval_result.tv_usec); + fps = .9*fps + .1*curr; + } +#endif +} + + +void run_isegmenter(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + int *gpus = 0; + int gpu = 0; + int ngpus = 0; + if(gpu_list){ + printf("%s\n", gpu_list); + int len = strlen(gpu_list); + ngpus = 1; + int i; + for(i = 0; i < len; ++i){ + if (gpu_list[i] == ',') ++ngpus; + } + gpus = calloc(ngpus, sizeof(int)); + for(i = 0; i < ngpus; ++i){ + gpus[i] = atoi(gpu_list); + gpu_list = strchr(gpu_list, ',')+1; + } + } else { + gpu = gpu_index; + gpus = &gpu; + ngpus = 1; + } + + int cam_index = find_int_arg(argc, argv, "-c", 0); + int clear = find_arg(argc, argv, "-clear"); + int display = find_arg(argc, argv, "-display"); + char *data = argv[3]; + char *cfg = argv[4]; + char *weights = (argc > 5) ? argv[5] : 0; + char *filename = (argc > 6) ? argv[6]: 0; + if(0==strcmp(argv[2], "test")) predict_isegmenter(data, cfg, weights, filename); + else if(0==strcmp(argv[2], "train")) train_isegmenter(data, cfg, weights, gpus, ngpus, clear, display); + else if(0==strcmp(argv[2], "demo")) demo_isegmenter(data, cfg, weights, cam_index, filename); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/lsd.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/lsd.c" new file mode 100644 index 00000000..4ab944c8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/lsd.c" @@ -0,0 +1,1378 @@ +#include +#include "darknet.h" + +/* +void train_lsd3(char *fcfg, char *fweight, char *gcfg, char *gweight, char *acfg, char *aweight, int clear) +{ +#ifdef GPU + //char *train_images = "/home/pjreddie/data/coco/trainvalno5k.txt"; + char *train_images = "/home/pjreddie/data/imagenet/imagenet1k.train.list"; + //char *style_images = "/home/pjreddie/data/coco/trainvalno5k.txt"; + char *style_images = "/home/pjreddie/zelda.txt"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + network fnet = load_network(fcfg, fweight, clear); + network gnet = load_network(gcfg, gweight, clear); + network anet = load_network(acfg, aweight, clear); + char *gbase = basecfg(gcfg); + char *abase = basecfg(acfg); + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", gnet->learning_rate, gnet->momentum, gnet->decay); + int imgs = gnet->batch*gnet->subdivisions; + int i = *gnet->seen/imgs; + data train, tbuffer; + data style, sbuffer; + + + list *slist = get_paths(style_images); + char **spaths = (char **)list_to_array(slist); + + list *tlist = get_paths(train_images); + char **tpaths = (char **)list_to_array(tlist); + + load_args targs= get_base_args(gnet); + targs.paths = tpaths; + targs.n = imgs; + targs.m = tlist->size; + targs.d = &tbuffer; + targs.type = CLASSIFICATION_DATA; + targs.classes = 1; + char *ls[1] = {"zelda"}; + targs.labels = ls; + + load_args sargs = get_base_args(gnet); + sargs.paths = spaths; + sargs.n = imgs; + sargs.m = slist->size; + sargs.d = &sbuffer; + sargs.type = CLASSIFICATION_DATA; + sargs.classes = 1; + sargs.labels = ls; + + pthread_t tload_thread = load_data_in_thread(targs); + pthread_t sload_thread = load_data_in_thread(sargs); + clock_t time; + + float aloss_avg = -1; + float floss_avg = -1; + + fnet->train=1; + int x_size = fnet->inputs*fnet->batch; + int y_size = fnet->truths*fnet->batch; + float *X = calloc(x_size, sizeof(float)); + float *y = calloc(y_size, sizeof(float)); + + + int ax_size = anet->inputs*anet->batch; + int ay_size = anet->truths*anet->batch; + fill_gpu(ay_size, .9, anet->truth_gpu, 1); + anet->delta_gpu = cuda_make_array(0, ax_size); + anet->train = 1; + + int gx_size = gnet->inputs*gnet->batch; + int gy_size = gnet->truths*gnet->batch; + gstate.input = cuda_make_array(0, gx_size); + gstate.truth = 0; + gstate.delta = 0; + gstate.train = 1; + + while (get_current_batch(gnet) < gnet->max_batches) { + i += 1; + time=clock(); + pthread_join(tload_thread, 0); + pthread_join(sload_thread, 0); + train = tbuffer; + style = sbuffer; + tload_thread = load_data_in_thread(targs); + sload_thread = load_data_in_thread(sargs); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + data generated = copy_data(train); + time=clock(); + + int j, k; + float floss = 0; + for(j = 0; j < fnet->subdivisions; ++j){ + layer imlayer = gnet->layers[gnet->n - 1]; + get_next_batch(train, fnet->batch, j*fnet->batch, X, y); + + cuda_push_array(fstate.input, X, x_size); + cuda_push_array(gstate.input, X, gx_size); + *gnet->seen += gnet->batch; + + forward_network_gpu(fnet, fstate); + float *feats = fnet->layers[fnet->n - 2].output_gpu; + copy_gpu(y_size, feats, 1, fstate.truth, 1); + + forward_network_gpu(gnet, gstate); + float *gen = gnet->layers[gnet->n-1].output_gpu; + copy_gpu(x_size, gen, 1, fstate.input, 1); + + fill_gpu(x_size, 0, fstate.delta, 1); + forward_network_gpu(fnet, fstate); + backward_network_gpu(fnet, fstate); + //HERE + + astate.input = gen; + fill_gpu(ax_size, 0, astate.delta, 1); + forward_network_gpu(anet, astate); + backward_network_gpu(anet, astate); + + float *delta = imlayer.delta_gpu; + fill_gpu(x_size, 0, delta, 1); + scal_gpu(x_size, 100, astate.delta, 1); + scal_gpu(x_size, .001, fstate.delta, 1); + axpy_gpu(x_size, 1, fstate.delta, 1, delta, 1); + axpy_gpu(x_size, 1, astate.delta, 1, delta, 1); + + //fill_gpu(x_size, 0, delta, 1); + //cuda_push_array(delta, X, x_size); + //axpy_gpu(x_size, -1, imlayer.output_gpu, 1, delta, 1); + //printf("pix error: %f\n", cuda_mag_array(delta, x_size)); + printf("fea error: %f\n", cuda_mag_array(fstate.delta, x_size)); + printf("adv error: %f\n", cuda_mag_array(astate.delta, x_size)); + //axpy_gpu(x_size, 1, astate.delta, 1, delta, 1); + + backward_network_gpu(gnet, gstate); + + floss += get_network_cost(fnet) /(fnet->subdivisions*fnet->batch); + + cuda_pull_array(imlayer.output_gpu, imlayer.output, imlayer.outputs*imlayer.batch); + for(k = 0; k < gnet->batch; ++k){ + int index = j*gnet->batch + k; + copy_cpu(imlayer.outputs, imlayer.output + k*imlayer.outputs, 1, generated.X.vals[index], 1); + generated.y.vals[index][0] = .1; + style.y.vals[index][0] = .9; + } + } + +*/ +/* + image sim = float_to_image(anet->w, anet->h, anet->c, style.X.vals[j]); + show_image(sim, "style"); + cvWaitKey(0); + */ + /* + + harmless_update_network_gpu(anet); + + data merge = concat_data(style, generated); + randomize_data(merge); + float aloss = train_network(anet, merge); + + update_network_gpu(gnet); + + free_data(merge); + free_data(train); + free_data(generated); + free_data(style); + if (aloss_avg < 0) aloss_avg = aloss; + if (floss_avg < 0) floss_avg = floss; + aloss_avg = aloss_avg*.9 + aloss*.1; + floss_avg = floss_avg*.9 + floss*.1; + + printf("%d: gen: %f, adv: %f | gen_avg: %f, adv_avg: %f, %f rate, %lf seconds, %d images\n", i, floss, aloss, floss_avg, aloss_avg, get_current_rate(gnet), sec(clock()-time), i*imgs); + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, gbase, i); + save_weights(gnet, buff); + sprintf(buff, "%s/%s_%d.weights", backup_directory, abase, i); + save_weights(anet, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, gbase); + save_weights(gnet, buff); + sprintf(buff, "%s/%s.backup", backup_directory, abase); + save_weights(anet, buff); + } + } +#endif +} +*/ + +/* +void train_pix2pix(char *cfg, char *weight, char *acfg, char *aweight, int clear) +{ +#ifdef GPU + //char *train_images = "/home/pjreddie/data/coco/train1.txt"; + //char *train_images = "/home/pjreddie/data/coco/trainvalno5k.txt"; + char *train_images = "/home/pjreddie/data/imagenet/imagenet1k.train.list"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfg); + char *abase = basecfg(acfg); + printf("%s\n", base); + network net = load_network(cfg, weight, clear); + network anet = load_network(acfg, aweight, clear); + + int i, j, k; + layer imlayer = {0}; + for (i = 0; i < net->n; ++i) { + if (net->layers[i].out_c == 3) { + imlayer = net->layers[i]; + break; + } + } + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = net->batch*net->subdivisions; + i = *net->seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.d = &buffer; + + args.min = net->min_crop; + args.max = net->max_crop; + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + args.size = net->w; + args.type = CLASSIFICATION_DATA; + args.classes = 1; + char *ls[1] = {"coco"}; + args.labels = ls; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + + network_state gstate = {0}; + gstate.index = 0; + gstate.net = net; + int x_size = get_network_input_size(net)*net->batch; + int y_size = x_size; + gstate.input = cuda_make_array(0, x_size); + gstate.truth = cuda_make_array(0, y_size); + gstate.delta = 0; + gstate.train = 1; + float *pixs = calloc(x_size, sizeof(float)); + float *graypixs = calloc(x_size, sizeof(float)); + float *y = calloc(y_size, sizeof(float)); + + network_state astate = {0}; + astate.index = 0; + astate.net = anet; + int ay_size = get_network_output_size(anet)*anet->batch; + astate.input = 0; + astate.truth = 0; + astate.delta = 0; + astate.train = 1; + + float *imerror = cuda_make_array(0, imlayer.outputs); + float *ones_gpu = cuda_make_array(0, ay_size); + fill_gpu(ay_size, .9, ones_gpu, 1); + + float aloss_avg = -1; + float gloss_avg = -1; + + //data generated = copy_data(train); + + while (get_current_batch(net) < net->max_batches) { + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + data gray = copy_data(train); + for(j = 0; j < imgs; ++j){ + image gim = float_to_image(net->w, net->h, net->c, gray.X.vals[j]); + grayscale_image_3c(gim); + train.y.vals[j][0] = .9; + + image yim = float_to_image(net->w, net->h, net->c, train.X.vals[j]); + //rgb_to_yuv(yim); + } + time=clock(); + float gloss = 0; + + for(j = 0; j < net->subdivisions; ++j){ + get_next_batch(train, net->batch, j*net->batch, pixs, y); + get_next_batch(gray, net->batch, j*net->batch, graypixs, y); + cuda_push_array(gstate.input, graypixs, x_size); + cuda_push_array(gstate.truth, pixs, y_size); + */ + /* + image origi = float_to_image(net->w, net->h, 3, pixs); + image grayi = float_to_image(net->w, net->h, 3, graypixs); + show_image(grayi, "gray"); + show_image(origi, "orig"); + cvWaitKey(0); + */ + /* + *net->seen += net->batch; + forward_network_gpu(net, gstate); + + fill_gpu(imlayer.outputs, 0, imerror, 1); + astate.input = imlayer.output_gpu; + astate.delta = imerror; + astate.truth = ones_gpu; + forward_network_gpu(anet, astate); + backward_network_gpu(anet, astate); + + scal_gpu(imlayer.outputs, .1, net->layers[net->n-1].delta_gpu, 1); + + backward_network_gpu(net, gstate); + + scal_gpu(imlayer.outputs, 1000, imerror, 1); + + printf("realness %f\n", cuda_mag_array(imerror, imlayer.outputs)); + printf("features %f\n", cuda_mag_array(net->layers[net->n-1].delta_gpu, imlayer.outputs)); + + axpy_gpu(imlayer.outputs, 1, imerror, 1, imlayer.delta_gpu, 1); + + gloss += get_network_cost(net) /(net->subdivisions*net->batch); + + cuda_pull_array(imlayer.output_gpu, imlayer.output, imlayer.outputs*imlayer.batch); + for(k = 0; k < net->batch; ++k){ + int index = j*net->batch + k; + copy_cpu(imlayer.outputs, imlayer.output + k*imlayer.outputs, 1, gray.X.vals[index], 1); + gray.y.vals[index][0] = .1; + } + } + harmless_update_network_gpu(anet); + + data merge = concat_data(train, gray); + randomize_data(merge); + float aloss = train_network(anet, merge); + + update_network_gpu(net); + update_network_gpu(anet); + free_data(merge); + free_data(train); + free_data(gray); + if (aloss_avg < 0) aloss_avg = aloss; + aloss_avg = aloss_avg*.9 + aloss*.1; + gloss_avg = gloss_avg*.9 + gloss*.1; + + printf("%d: gen: %f, adv: %f | gen_avg: %f, adv_avg: %f, %f rate, %lf seconds, %d images\n", i, gloss, aloss, gloss_avg, aloss_avg, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + sprintf(buff, "%s/%s_%d.weights", backup_directory, abase, i); + save_weights(anet, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + sprintf(buff, "%s/%s.backup", backup_directory, abase); + save_weights(anet, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +#endif +} +*/ + +void slerp(float *start, float *end, float s, int n, float *out) +{ + float omega = acos(dot_cpu(n, start, 1, end, 1)); + float so = sin(omega); + fill_cpu(n, 0, out, 1); + axpy_cpu(n, sin((1-s)*omega)/so, start, 1, out, 1); + axpy_cpu(n, sin(s*omega)/so, end, 1, out, 1); + + float mag = mag_array(out, n); + scale_array(out, n, 1./mag); +} + +image random_unit_vector_image(int w, int h, int c) +{ + image im = make_image(w, h, c); + int i; + for(i = 0; i < im.w*im.h*im.c; ++i){ + im.data[i] = rand_normal(); + } + float mag = mag_array(im.data, im.w*im.h*im.c); + scale_array(im.data, im.w*im.h*im.c, 1./mag); + return im; +} + +void inter_dcgan(char *cfgfile, char *weightfile) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + int i, imlayer = 0; + + for (i = 0; i < net->n; ++i) { + if (net->layers[i].out_c == 3) { + imlayer = i; + printf("%d\n", i); + break; + } + } + image start = random_unit_vector_image(net->w, net->h, net->c); + image end = random_unit_vector_image(net->w, net->h, net->c); + image im = make_image(net->w, net->h, net->c); + image orig = copy_image(start); + + int c = 0; + int count = 0; + int max_count = 15; + while(1){ + ++c; + + if(count == max_count){ + count = 0; + free_image(start); + start = end; + end = random_unit_vector_image(net->w, net->h, net->c); + if(c > 300){ + end = orig; + } + if(c>300 + max_count) return; + } + ++count; + + slerp(start.data, end.data, (float)count / max_count, im.w*im.h*im.c, im.data); + + float *X = im.data; + time=clock(); + network_predict(net, X); + image out = get_network_image_layer(net, imlayer); + //yuv_to_rgb(out); + normalize_image(out); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + //char buff[256]; + sprintf(buff, "out%05d", c); + save_image(out, "out"); + save_image(out, buff); + show_image(out, "out", 0); + } +} + +void test_dcgan(char *cfgfile, char *weightfile) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + int imlayer = 0; + + imlayer = net->n-1; + + while(1){ + image im = make_image(net->w, net->h, net->c); + int i; + for(i = 0; i < im.w*im.h*im.c; ++i){ + im.data[i] = rand_normal(); + } + //float mag = mag_array(im.data, im.w*im.h*im.c); + //scale_array(im.data, im.w*im.h*im.c, 1./mag); + + float *X = im.data; + time=clock(); + network_predict(net, X); + image out = get_network_image_layer(net, imlayer); + //yuv_to_rgb(out); + normalize_image(out); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + save_image(out, "out"); + show_image(out, "out", 0); + + free_image(im); + } +} + +void set_network_alpha_beta(network *net, float alpha, float beta) +{ + int i; + for(i = 0; i < net->n; ++i){ + if(net->layers[i].type == SHORTCUT){ + net->layers[i].alpha = alpha; + net->layers[i].beta = beta; + } + } +} + +void train_prog(char *cfg, char *weight, char *acfg, char *aweight, int clear, int display, char *train_images, int maxbatch) +{ +#ifdef GPU + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfg); + char *abase = basecfg(acfg); + printf("%s\n", base); + network *gnet = load_network(cfg, weight, clear); + network *anet = load_network(acfg, aweight, clear); + + int i, j, k; + layer imlayer = gnet->layers[gnet->n-1]; + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", gnet->learning_rate, gnet->momentum, gnet->decay); + int imgs = gnet->batch*gnet->subdivisions; + i = *gnet->seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); + char **paths = (char **)list_to_array(plist); + + load_args args= get_base_args(anet); + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.d = &buffer; + args.type = CLASSIFICATION_DATA; + args.threads=16; + args.classes = 1; + char *ls[2] = {"imagenet", "zzzzzzzz"}; + args.labels = ls; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + + gnet->train = 1; + anet->train = 1; + + int x_size = gnet->inputs*gnet->batch; + int y_size = gnet->truths*gnet->batch; + float *imerror = cuda_make_array(0, y_size); + + float aloss_avg = -1; + + if (maxbatch == 0) maxbatch = gnet->max_batches; + while (get_current_batch(gnet) < maxbatch) { + { + int cb = get_current_batch(gnet); + float alpha = (float) cb / (maxbatch/2); + if(alpha > 1) alpha = 1; + float beta = 1 - alpha; + printf("%f %f\n", alpha, beta); + set_network_alpha_beta(gnet, alpha, beta); + set_network_alpha_beta(anet, beta, alpha); + } + + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + data gen = copy_data(train); + for (j = 0; j < imgs; ++j) { + train.y.vals[j][0] = 1; + gen.y.vals[j][0] = 0; + } + time=clock(); + + for (j = 0; j < gnet->subdivisions; ++j) { + get_next_batch(train, gnet->batch, j*gnet->batch, gnet->truth, 0); + int z; + for(z = 0; z < x_size; ++z){ + gnet->input[z] = rand_normal(); + } + /* + for(z = 0; z < gnet->batch; ++z){ + float mag = mag_array(gnet->input + z*gnet->inputs, gnet->inputs); + scale_array(gnet->input + z*gnet->inputs, gnet->inputs, 1./mag); + } + */ + *gnet->seen += gnet->batch; + forward_network(gnet); + + fill_gpu(imlayer.outputs*imlayer.batch, 0, imerror, 1); + fill_cpu(anet->truths*anet->batch, 1, anet->truth, 1); + copy_cpu(anet->inputs*anet->batch, imlayer.output, 1, anet->input, 1); + anet->delta_gpu = imerror; + forward_network(anet); + backward_network(anet); + + //float genaloss = *anet->cost / anet->batch; + + scal_gpu(imlayer.outputs*imlayer.batch, 1, imerror, 1); + scal_gpu(imlayer.outputs*imlayer.batch, 0, gnet->layers[gnet->n-1].delta_gpu, 1); + + axpy_gpu(imlayer.outputs*imlayer.batch, 1, imerror, 1, gnet->layers[gnet->n-1].delta_gpu, 1); + + backward_network(gnet); + + for(k = 0; k < gnet->batch; ++k){ + int index = j*gnet->batch + k; + copy_cpu(gnet->outputs, gnet->output + k*gnet->outputs, 1, gen.X.vals[index], 1); + } + } + harmless_update_network_gpu(anet); + + data merge = concat_data(train, gen); + float aloss = train_network(anet, merge); + +#ifdef OPENCV + if(display){ + image im = float_to_image(anet->w, anet->h, anet->c, gen.X.vals[0]); + image im2 = float_to_image(anet->w, anet->h, anet->c, train.X.vals[0]); + show_image(im, "gen", 1); + show_image(im2, "train", 1); + save_image(im, "gen"); + save_image(im2, "train"); + } +#endif + + update_network_gpu(gnet); + + free_data(merge); + free_data(train); + free_data(gen); + if (aloss_avg < 0) aloss_avg = aloss; + aloss_avg = aloss_avg*.9 + aloss*.1; + + printf("%d: adv: %f | adv_avg: %f, %f rate, %lf seconds, %d images\n", i, aloss, aloss_avg, get_current_rate(gnet), sec(clock()-time), i*imgs); + if(i%10000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(gnet, buff); + sprintf(buff, "%s/%s_%d.weights", backup_directory, abase, i); + save_weights(anet, buff); + } + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(gnet, buff); + sprintf(buff, "%s/%s.backup", backup_directory, abase); + save_weights(anet, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(gnet, buff); +#endif +} + +void train_dcgan(char *cfg, char *weight, char *acfg, char *aweight, int clear, int display, char *train_images, int maxbatch) +{ +#ifdef GPU + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfg); + char *abase = basecfg(acfg); + printf("%s\n", base); + network *gnet = load_network(cfg, weight, clear); + network *anet = load_network(acfg, aweight, clear); + //float orig_rate = anet->learning_rate; + + int i, j, k; + layer imlayer = {0}; + for (i = 0; i < gnet->n; ++i) { + if (gnet->layers[i].out_c == 3) { + imlayer = gnet->layers[i]; + break; + } + } + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", gnet->learning_rate, gnet->momentum, gnet->decay); + int imgs = gnet->batch*gnet->subdivisions; + i = *gnet->seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args= get_base_args(anet); + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.d = &buffer; + args.type = CLASSIFICATION_DATA; + args.threads=16; + args.classes = 1; + char *ls[2] = {"imagenet", "zzzzzzzz"}; + args.labels = ls; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + + gnet->train = 1; + anet->train = 1; + + int x_size = gnet->inputs*gnet->batch; + int y_size = gnet->truths*gnet->batch; + float *imerror = cuda_make_array(0, y_size); + + //int ay_size = anet->truths*anet->batch; + + float aloss_avg = -1; + + //data generated = copy_data(train); + + if (maxbatch == 0) maxbatch = gnet->max_batches; + while (get_current_batch(gnet) < maxbatch) { + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + + //translate_data_rows(train, -.5); + //scale_data_rows(train, 2); + + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + data gen = copy_data(train); + for (j = 0; j < imgs; ++j) { + train.y.vals[j][0] = 1; + gen.y.vals[j][0] = 0; + } + time=clock(); + + for(j = 0; j < gnet->subdivisions; ++j){ + get_next_batch(train, gnet->batch, j*gnet->batch, gnet->truth, 0); + int z; + for(z = 0; z < x_size; ++z){ + gnet->input[z] = rand_normal(); + } + for(z = 0; z < gnet->batch; ++z){ + float mag = mag_array(gnet->input + z*gnet->inputs, gnet->inputs); + scale_array(gnet->input + z*gnet->inputs, gnet->inputs, 1./mag); + } + /* + for(z = 0; z < 100; ++z){ + printf("%f, ", gnet->input[z]); + } + printf("\n"); + printf("input: %f %f\n", mean_array(gnet->input, x_size), variance_array(gnet->input, x_size)); + */ + + //cuda_push_array(gnet->input_gpu, gnet->input, x_size); + //cuda_push_array(gnet->truth_gpu, gnet->truth, y_size); + *gnet->seen += gnet->batch; + forward_network(gnet); + + fill_gpu(imlayer.outputs*imlayer.batch, 0, imerror, 1); + fill_cpu(anet->truths*anet->batch, 1, anet->truth, 1); + copy_cpu(anet->inputs*anet->batch, imlayer.output, 1, anet->input, 1); + anet->delta_gpu = imerror; + forward_network(anet); + backward_network(anet); + + //float genaloss = *anet->cost / anet->batch; + //printf("%f\n", genaloss); + + scal_gpu(imlayer.outputs*imlayer.batch, 1, imerror, 1); + scal_gpu(imlayer.outputs*imlayer.batch, 0, gnet->layers[gnet->n-1].delta_gpu, 1); + + //printf("realness %f\n", cuda_mag_array(imerror, imlayer.outputs*imlayer.batch)); + //printf("features %f\n", cuda_mag_array(gnet->layers[gnet->n-1].delta_gpu, imlayer.outputs*imlayer.batch)); + + axpy_gpu(imlayer.outputs*imlayer.batch, 1, imerror, 1, gnet->layers[gnet->n-1].delta_gpu, 1); + + backward_network(gnet); + + /* + for(k = 0; k < gnet->n; ++k){ + layer l = gnet->layers[k]; + cuda_pull_array(l.output_gpu, l.output, l.outputs*l.batch); + printf("%d: %f %f\n", k, mean_array(l.output, l.outputs*l.batch), variance_array(l.output, l.outputs*l.batch)); + } + */ + + for(k = 0; k < gnet->batch; ++k){ + int index = j*gnet->batch + k; + copy_cpu(gnet->outputs, gnet->output + k*gnet->outputs, 1, gen.X.vals[index], 1); + } + } + harmless_update_network_gpu(anet); + + data merge = concat_data(train, gen); + //randomize_data(merge); + float aloss = train_network(anet, merge); + + //translate_image(im, 1); + //scale_image(im, .5); + //translate_image(im2, 1); + //scale_image(im2, .5); +#ifdef OPENCV + if(display){ + image im = float_to_image(anet->w, anet->h, anet->c, gen.X.vals[0]); + image im2 = float_to_image(anet->w, anet->h, anet->c, train.X.vals[0]); + show_image(im, "gen", 1); + show_image(im2, "train", 1); + save_image(im, "gen"); + save_image(im2, "train"); + } +#endif + + /* + if(aloss < .1){ + anet->learning_rate = 0; + } else if (aloss > .3){ + anet->learning_rate = orig_rate; + } + */ + + update_network_gpu(gnet); + + free_data(merge); + free_data(train); + free_data(gen); + if (aloss_avg < 0) aloss_avg = aloss; + aloss_avg = aloss_avg*.9 + aloss*.1; + + printf("%d: adv: %f | adv_avg: %f, %f rate, %lf seconds, %d images\n", i, aloss, aloss_avg, get_current_rate(gnet), sec(clock()-time), i*imgs); + if(i%10000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(gnet, buff); + sprintf(buff, "%s/%s_%d.weights", backup_directory, abase, i); + save_weights(anet, buff); + } + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(gnet, buff); + sprintf(buff, "%s/%s.backup", backup_directory, abase); + save_weights(anet, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(gnet, buff); +#endif +} + +void train_colorizer(char *cfg, char *weight, char *acfg, char *aweight, int clear, int display) +{ +#ifdef GPU + //char *train_images = "/home/pjreddie/data/coco/train1.txt"; + //char *train_images = "/home/pjreddie/data/coco/trainvalno5k.txt"; + char *train_images = "/home/pjreddie/data/imagenet/imagenet1k.train.list"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfg); + char *abase = basecfg(acfg); + printf("%s\n", base); + network *net = load_network(cfg, weight, clear); + network *anet = load_network(acfg, aweight, clear); + + int i, j, k; + layer imlayer = {0}; + for (i = 0; i < net->n; ++i) { + if (net->layers[i].out_c == 3) { + imlayer = net->layers[i]; + break; + } + } + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = net->batch*net->subdivisions; + i = *net->seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args= get_base_args(net); + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.d = &buffer; + + args.type = CLASSIFICATION_DATA; + args.classes = 1; + char *ls[2] = {"imagenet"}; + args.labels = ls; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + + int x_size = net->inputs*net->batch; + //int y_size = x_size; + net->delta = 0; + net->train = 1; + float *pixs = calloc(x_size, sizeof(float)); + float *graypixs = calloc(x_size, sizeof(float)); + //float *y = calloc(y_size, sizeof(float)); + + //int ay_size = anet->outputs*anet->batch; + anet->delta = 0; + anet->train = 1; + + float *imerror = cuda_make_array(0, imlayer.outputs*imlayer.batch); + + float aloss_avg = -1; + float gloss_avg = -1; + + //data generated = copy_data(train); + + while (get_current_batch(net) < net->max_batches) { + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + data gray = copy_data(train); + for(j = 0; j < imgs; ++j){ + image gim = float_to_image(net->w, net->h, net->c, gray.X.vals[j]); + grayscale_image_3c(gim); + train.y.vals[j][0] = .95; + gray.y.vals[j][0] = .05; + } + time=clock(); + float gloss = 0; + + for(j = 0; j < net->subdivisions; ++j){ + get_next_batch(train, net->batch, j*net->batch, pixs, 0); + get_next_batch(gray, net->batch, j*net->batch, graypixs, 0); + cuda_push_array(net->input_gpu, graypixs, net->inputs*net->batch); + cuda_push_array(net->truth_gpu, pixs, net->truths*net->batch); + /* + image origi = float_to_image(net->w, net->h, 3, pixs); + image grayi = float_to_image(net->w, net->h, 3, graypixs); + show_image(grayi, "gray"); + show_image(origi, "orig"); + cvWaitKey(0); + */ + *net->seen += net->batch; + forward_network_gpu(net); + + fill_gpu(imlayer.outputs*imlayer.batch, 0, imerror, 1); + copy_gpu(anet->inputs*anet->batch, imlayer.output_gpu, 1, anet->input_gpu, 1); + fill_gpu(anet->inputs*anet->batch, .95, anet->truth_gpu, 1); + anet->delta_gpu = imerror; + forward_network_gpu(anet); + backward_network_gpu(anet); + + scal_gpu(imlayer.outputs*imlayer.batch, 1./100., net->layers[net->n-1].delta_gpu, 1); + + scal_gpu(imlayer.outputs*imlayer.batch, 1, imerror, 1); + + printf("realness %f\n", cuda_mag_array(imerror, imlayer.outputs*imlayer.batch)); + printf("features %f\n", cuda_mag_array(net->layers[net->n-1].delta_gpu, imlayer.outputs*imlayer.batch)); + + axpy_gpu(imlayer.outputs*imlayer.batch, 1, imerror, 1, net->layers[net->n-1].delta_gpu, 1); + + backward_network_gpu(net); + + + gloss += *net->cost /(net->subdivisions*net->batch); + + for(k = 0; k < net->batch; ++k){ + int index = j*net->batch + k; + copy_cpu(imlayer.outputs, imlayer.output + k*imlayer.outputs, 1, gray.X.vals[index], 1); + } + } + harmless_update_network_gpu(anet); + + data merge = concat_data(train, gray); + //randomize_data(merge); + float aloss = train_network(anet, merge); + + update_network_gpu(net); + +#ifdef OPENCV + if(display){ + image im = float_to_image(anet->w, anet->h, anet->c, gray.X.vals[0]); + image im2 = float_to_image(anet->w, anet->h, anet->c, train.X.vals[0]); + show_image(im, "gen", 1); + show_image(im2, "train", 1); + } +#endif + free_data(merge); + free_data(train); + free_data(gray); + if (aloss_avg < 0) aloss_avg = aloss; + aloss_avg = aloss_avg*.9 + aloss*.1; + gloss_avg = gloss_avg*.9 + gloss*.1; + + printf("%d: gen: %f, adv: %f | gen_avg: %f, adv_avg: %f, %f rate, %lf seconds, %d images\n", i, gloss, aloss, gloss_avg, aloss_avg, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + sprintf(buff, "%s/%s_%d.weights", backup_directory, abase, i); + save_weights(anet, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + sprintf(buff, "%s/%s.backup", backup_directory, abase); + save_weights(anet, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +#endif +} + +/* + void train_lsd2(char *cfgfile, char *weightfile, char *acfgfile, char *aweightfile, int clear) + { +#ifdef GPU +char *train_images = "/home/pjreddie/data/coco/trainvalno5k.txt"; +char *backup_directory = "/home/pjreddie/backup/"; +srand(time(0)); +char *base = basecfg(cfgfile); +printf("%s\n", base); +network net = parse_network_cfg(cfgfile); +if(weightfile){ +load_weights(&net, weightfile); +} +if(clear) *net->seen = 0; + +char *abase = basecfg(acfgfile); +network anet = parse_network_cfg(acfgfile); +if(aweightfile){ +load_weights(&anet, aweightfile); +} +if(clear) *anet->seen = 0; + +int i, j, k; +layer imlayer = {0}; +for (i = 0; i < net->n; ++i) { +if (net->layers[i].out_c == 3) { +imlayer = net->layers[i]; +break; +} +} + +printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); +int imgs = net->batch*net->subdivisions; +i = *net->seen/imgs; +data train, buffer; + + +list *plist = get_paths(train_images); +//int N = plist->size; +char **paths = (char **)list_to_array(plist); + +load_args args = {0}; +args.w = net->w; +args.h = net->h; +args.paths = paths; +args.n = imgs; +args.m = plist->size; +args.d = &buffer; + +args.min = net->min_crop; +args.max = net->max_crop; +args.angle = net->angle; +args.aspect = net->aspect; +args.exposure = net->exposure; +args.saturation = net->saturation; +args.hue = net->hue; +args.size = net->w; +args.type = CLASSIFICATION_DATA; +args.classes = 1; +char *ls[1] = {"coco"}; +args.labels = ls; + +pthread_t load_thread = load_data_in_thread(args); +clock_t time; + +network_state gstate = {0}; +gstate.index = 0; +gstate.net = net; +int x_size = get_network_input_size(net)*net->batch; +int y_size = 1*net->batch; +gstate.input = cuda_make_array(0, x_size); +gstate.truth = 0; +gstate.delta = 0; +gstate.train = 1; +float *X = calloc(x_size, sizeof(float)); +float *y = calloc(y_size, sizeof(float)); + +network_state astate = {0}; +astate.index = 0; +astate.net = anet; +int ay_size = get_network_output_size(anet)*anet->batch; +astate.input = 0; +astate.truth = 0; +astate.delta = 0; +astate.train = 1; + +float *imerror = cuda_make_array(0, imlayer.outputs); +float *ones_gpu = cuda_make_array(0, ay_size); +fill_gpu(ay_size, 1, ones_gpu, 1); + +float aloss_avg = -1; +float gloss_avg = -1; + +//data generated = copy_data(train); + +while (get_current_batch(net) < net->max_batches) { + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + data generated = copy_data(train); + time=clock(); + float gloss = 0; + + for(j = 0; j < net->subdivisions; ++j){ + get_next_batch(train, net->batch, j*net->batch, X, y); + cuda_push_array(gstate.input, X, x_size); + *net->seen += net->batch; + forward_network_gpu(net, gstate); + + fill_gpu(imlayer.outputs, 0, imerror, 1); + astate.input = imlayer.output_gpu; + astate.delta = imerror; + astate.truth = ones_gpu; + forward_network_gpu(anet, astate); + backward_network_gpu(anet, astate); + + scal_gpu(imlayer.outputs, 1, imerror, 1); + axpy_gpu(imlayer.outputs, 1, imerror, 1, imlayer.delta_gpu, 1); + + backward_network_gpu(net, gstate); + + printf("features %f\n", cuda_mag_array(imlayer.delta_gpu, imlayer.outputs)); + printf("realness %f\n", cuda_mag_array(imerror, imlayer.outputs)); + + gloss += get_network_cost(net) /(net->subdivisions*net->batch); + + cuda_pull_array(imlayer.output_gpu, imlayer.output, imlayer.outputs*imlayer.batch); + for(k = 0; k < net->batch; ++k){ + int index = j*net->batch + k; + copy_cpu(imlayer.outputs, imlayer.output + k*imlayer.outputs, 1, generated.X.vals[index], 1); + generated.y.vals[index][0] = 0; + } + } + harmless_update_network_gpu(anet); + + data merge = concat_data(train, generated); + randomize_data(merge); + float aloss = train_network(anet, merge); + + update_network_gpu(net); + update_network_gpu(anet); + free_data(merge); + free_data(train); + free_data(generated); + if (aloss_avg < 0) aloss_avg = aloss; + aloss_avg = aloss_avg*.9 + aloss*.1; + gloss_avg = gloss_avg*.9 + gloss*.1; + + printf("%d: gen: %f, adv: %f | gen_avg: %f, adv_avg: %f, %f rate, %lf seconds, %d images\n", i, gloss, aloss, gloss_avg, aloss_avg, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + sprintf(buff, "%s/%s_%d.weights", backup_directory, abase, i); + save_weights(anet, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + sprintf(buff, "%s/%s.backup", backup_directory, abase); + save_weights(anet, buff); + } +} +char buff[256]; +sprintf(buff, "%s/%s_final.weights", backup_directory, base); +save_weights(net, buff); +#endif +} +*/ + +/* + void train_lsd(char *cfgfile, char *weightfile, int clear) + { + char *train_images = "/home/pjreddie/data/coco/trainvalno5k.txt"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + if(clear) *net->seen = 0; + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = net->batch*net->subdivisions; + int i = *net->seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); +//int N = plist->size; +char **paths = (char **)list_to_array(plist); + +load_args args = {0}; +args.w = net->w; +args.h = net->h; +args.paths = paths; +args.n = imgs; +args.m = plist->size; +args.d = &buffer; + +args.min = net->min_crop; +args.max = net->max_crop; +args.angle = net->angle; +args.aspect = net->aspect; +args.exposure = net->exposure; +args.saturation = net->saturation; +args.hue = net->hue; +args.size = net->w; +args.type = CLASSIFICATION_DATA; +args.classes = 1; +char *ls[1] = {"coco"}; +args.labels = ls; + +pthread_t load_thread = load_data_in_thread(args); +clock_t time; +//while(i*imgs < N*120){ +while(get_current_batch(net) < net->max_batches){ +i += 1; +time=clock(); +pthread_join(load_thread, 0); +train = buffer; +load_thread = load_data_in_thread(args); + +printf("Loaded: %lf seconds\n", sec(clock()-time)); + +time=clock(); +float loss = train_network(net, train); +if (avg_loss < 0) avg_loss = loss; +avg_loss = avg_loss*.9 + loss*.1; + +printf("%d: %f, %f avg, %f rate, %lf seconds, %d images\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), i*imgs); +if(i%1000==0){ +char buff[256]; +sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); +save_weights(net, buff); +} +if(i%100==0){ +char buff[256]; +sprintf(buff, "%s/%s.backup", backup_directory, base); +save_weights(net, buff); +} +free_data(train); +} +char buff[256]; +sprintf(buff, "%s/%s_final.weights", backup_directory, base); +save_weights(net, buff); +} +*/ + +void test_lsd(char *cfg, char *weights, char *filename, int gray) +{ + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + int i, imlayer = 0; + + for (i = 0; i < net->n; ++i) { + if (net->layers[i].out_c == 3) { + imlayer = i; + printf("%d\n", i); + break; + } + } + + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image resized = resize_min(im, net->w); + image crop = crop_image(resized, (resized.w - net->w)/2, (resized.h - net->h)/2, net->w, net->h); + if(gray) grayscale_image_3c(crop); + + float *X = crop.data; + time=clock(); + network_predict(net, X); + image out = get_network_image_layer(net, imlayer); + //yuv_to_rgb(out); + constrain_image(out); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + save_image(out, "out"); + show_image(out, "out", 1); + show_image(crop, "crop", 0); + + free_image(im); + free_image(resized); + free_image(crop); + if (filename) break; + } +} + + +void run_lsd(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + int clear = find_arg(argc, argv, "-clear"); + int display = find_arg(argc, argv, "-display"); + int batches = find_int_arg(argc, argv, "-b", 0); + char *file = find_char_arg(argc, argv, "-file", "/home/pjreddie/data/imagenet/imagenet1k.train.list"); + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5] : 0; + char *acfg = argv[5]; + char *aweights = (argc > 6) ? argv[6] : 0; + //if(0==strcmp(argv[2], "train")) train_lsd(cfg, weights, clear); + //else if(0==strcmp(argv[2], "train2")) train_lsd2(cfg, weights, acfg, aweights, clear); + //else if(0==strcmp(argv[2], "traincolor")) train_colorizer(cfg, weights, acfg, aweights, clear); + //else if(0==strcmp(argv[2], "train3")) train_lsd3(argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], clear); + if(0==strcmp(argv[2], "traingan")) train_dcgan(cfg, weights, acfg, aweights, clear, display, file, batches); + else if(0==strcmp(argv[2], "trainprog")) train_prog(cfg, weights, acfg, aweights, clear, display, file, batches); + else if(0==strcmp(argv[2], "traincolor")) train_colorizer(cfg, weights, acfg, aweights, clear, display); + else if(0==strcmp(argv[2], "gan")) test_dcgan(cfg, weights); + else if(0==strcmp(argv[2], "inter")) inter_dcgan(cfg, weights); + else if(0==strcmp(argv[2], "test")) test_lsd(cfg, weights, filename, 0); + else if(0==strcmp(argv[2], "color")) test_lsd(cfg, weights, filename, 1); + /* + else if(0==strcmp(argv[2], "valid")) validate_lsd(cfg, weights); + */ +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/nightmare.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/nightmare.c" new file mode 100644 index 00000000..2978eb61 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/nightmare.c" @@ -0,0 +1,414 @@ +#include "darknet.h" + +#include + +// ./darknet nightmare cfg/extractor.recon.cfg ~/trained/yolo-coco.conv frame6.png -reconstruct -iters 500 -i 3 -lambda .1 -rate .01 -smooth 2 + +float abs_mean(float *x, int n) +{ + int i; + float sum = 0; + for (i = 0; i < n; ++i){ + sum += fabs(x[i]); + } + return sum/n; +} + +void calculate_loss(float *output, float *delta, int n, float thresh) +{ + int i; + float mean = mean_array(output, n); + float var = variance_array(output, n); + for(i = 0; i < n; ++i){ + if(delta[i] > mean + thresh*sqrt(var)) delta[i] = output[i]; + else delta[i] = 0; + } +} + +void optimize_picture(network *net, image orig, int max_layer, float scale, float rate, float thresh, int norm) +{ + //scale_image(orig, 2); + //translate_image(orig, -1); + net->n = max_layer + 1; + + int dx = rand()%16 - 8; + int dy = rand()%16 - 8; + int flip = rand()%2; + + image crop = crop_image(orig, dx, dy, orig.w, orig.h); + image im = resize_image(crop, (int)(orig.w * scale), (int)(orig.h * scale)); + if(flip) flip_image(im); + + resize_network(net, im.w, im.h); + layer last = net->layers[net->n-1]; + //net->layers[net->n - 1].activation = LINEAR; + + image delta = make_image(im.w, im.h, im.c); + +#ifdef GPU + net->delta_gpu = cuda_make_array(delta.data, im.w*im.h*im.c); + copy_cpu(net->inputs, im.data, 1, net->input, 1); + + forward_network_gpu(net); + copy_gpu(last.outputs, last.output_gpu, 1, last.delta_gpu, 1); + + cuda_pull_array(last.delta_gpu, last.delta, last.outputs); + calculate_loss(last.delta, last.delta, last.outputs, thresh); + cuda_push_array(last.delta_gpu, last.delta, last.outputs); + + backward_network_gpu(net); + + cuda_pull_array(net->delta_gpu, delta.data, im.w*im.h*im.c); + cuda_free(net->delta_gpu); + net->delta_gpu = 0; +#else + printf("\nnet: %d %d %d im: %d %d %d\n", net->w, net->h, net->inputs, im.w, im.h, im.c); + copy_cpu(net->inputs, im.data, 1, net->input, 1); + net->delta = delta.data; + forward_network(net); + copy_cpu(last.outputs, last.output, 1, last.delta, 1); + calculate_loss(last.output, last.delta, last.outputs, thresh); + backward_network(net); +#endif + + if(flip) flip_image(delta); + //normalize_array(delta.data, delta.w*delta.h*delta.c); + image resized = resize_image(delta, orig.w, orig.h); + image out = crop_image(resized, -dx, -dy, orig.w, orig.h); + + /* + image g = grayscale_image(out); + free_image(out); + out = g; + */ + + //rate = rate / abs_mean(out.data, out.w*out.h*out.c); + image gray = make_image(out.w, out.h, out.c); + fill_image(gray, .5); + axpy_cpu(orig.w*orig.h*orig.c, -1, orig.data, 1, gray.data, 1); + axpy_cpu(orig.w*orig.h*orig.c, .1, gray.data, 1, out.data, 1); + + if(norm) normalize_array(out.data, out.w*out.h*out.c); + axpy_cpu(orig.w*orig.h*orig.c, rate, out.data, 1, orig.data, 1); + + /* + normalize_array(orig.data, orig.w*orig.h*orig.c); + scale_image(orig, sqrt(var)); + translate_image(orig, mean); + */ + + //translate_image(orig, 1); + //scale_image(orig, .5); + //normalize_image(orig); + + constrain_image(orig); + + free_image(crop); + free_image(im); + free_image(delta); + free_image(resized); + free_image(out); + +} + +void smooth(image recon, image update, float lambda, int num) +{ + int i, j, k; + int ii, jj; + for(k = 0; k < recon.c; ++k){ + for(j = 0; j < recon.h; ++j){ + for(i = 0; i < recon.w; ++i){ + int out_index = i + recon.w*(j + recon.h*k); + for(jj = j-num; jj <= j + num && jj < recon.h; ++jj){ + if (jj < 0) continue; + for(ii = i-num; ii <= i + num && ii < recon.w; ++ii){ + if (ii < 0) continue; + int in_index = ii + recon.w*(jj + recon.h*k); + update.data[out_index] += lambda * (recon.data[in_index] - recon.data[out_index]); + } + } + } + } + } +} + +void reconstruct_picture(network *net, float *features, image recon, image update, float rate, float momentum, float lambda, int smooth_size, int iters) +{ + int iter = 0; + for (iter = 0; iter < iters; ++iter) { + image delta = make_image(recon.w, recon.h, recon.c); + +#ifdef GPU + layer l = get_network_output_layer(net); + cuda_push_array(net->input_gpu, recon.data, recon.w*recon.h*recon.c); + //cuda_push_array(net->truth_gpu, features, net->truths); + net->delta_gpu = cuda_make_array(delta.data, delta.w*delta.h*delta.c); + + forward_network_gpu(net); + cuda_push_array(l.delta_gpu, features, l.outputs); + axpy_gpu(l.outputs, -1, l.output_gpu, 1, l.delta_gpu, 1); + backward_network_gpu(net); + + cuda_pull_array(net->delta_gpu, delta.data, delta.w*delta.h*delta.c); + + cuda_free(net->delta_gpu); +#else + net->input = recon.data; + net->delta = delta.data; + net->truth = features; + + forward_network(net); + backward_network(net); +#endif + + //normalize_array(delta.data, delta.w*delta.h*delta.c); + axpy_cpu(recon.w*recon.h*recon.c, 1, delta.data, 1, update.data, 1); + //smooth(recon, update, lambda, smooth_size); + + axpy_cpu(recon.w*recon.h*recon.c, rate, update.data, 1, recon.data, 1); + scal_cpu(recon.w*recon.h*recon.c, momentum, update.data, 1); + + float mag = mag_array(delta.data, recon.w*recon.h*recon.c); + printf("mag: %f\n", mag); + //scal_cpu(recon.w*recon.h*recon.c, 600/mag, recon.data, 1); + + constrain_image(recon); + free_image(delta); + } +} + +/* +void run_lsd(int argc, char **argv) +{ + srand(0); + if(argc < 3){ + fprintf(stderr, "usage: %s %s [cfg] [weights] [image] [options! (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[2]; + char *weights = argv[3]; + char *input = argv[4]; + + int norm = find_int_arg(argc, argv, "-norm", 1); + int rounds = find_int_arg(argc, argv, "-rounds", 1); + int iters = find_int_arg(argc, argv, "-iters", 10); + float rate = find_float_arg(argc, argv, "-rate", .04); + float momentum = find_float_arg(argc, argv, "-momentum", .9); + float lambda = find_float_arg(argc, argv, "-lambda", .01); + char *prefix = find_char_arg(argc, argv, "-prefix", 0); + int reconstruct = find_arg(argc, argv, "-reconstruct"); + int smooth_size = find_int_arg(argc, argv, "-smooth", 1); + + network net = parse_network_cfg(cfg); + load_weights(&net, weights); + char *cfgbase = basecfg(cfg); + char *imbase = basecfg(input); + + set_batch_network(&net, 1); + image im = load_image_color(input, 0, 0); + + float *features = 0; + image update; + if (reconstruct){ + im = letterbox_image(im, net->w, net->h); + + int zz = 0; + network_predict(net, im.data); + image out_im = get_network_image(net); + image crop = crop_image(out_im, zz, zz, out_im.w-2*zz, out_im.h-2*zz); + //flip_image(crop); + image f_im = resize_image(crop, out_im.w, out_im.h); + free_image(crop); + printf("%d features\n", out_im.w*out_im.h*out_im.c); + + + im = resize_image(im, im.w, im.h); + f_im = resize_image(f_im, f_im.w, f_im.h); + features = f_im.data; + + int i; + for(i = 0; i < 14*14*512; ++i){ + features[i] += rand_uniform(-.19, .19); + } + + free_image(im); + im = make_random_image(im.w, im.h, im.c); + update = make_image(im.w, im.h, im.c); + + } + + int e; + int n; + for(e = 0; e < rounds; ++e){ + fprintf(stderr, "Iteration: "); + fflush(stderr); + for(n = 0; n < iters; ++n){ + fprintf(stderr, "%d, ", n); + fflush(stderr); + if(reconstruct){ + reconstruct_picture(net, features, im, update, rate, momentum, lambda, smooth_size, 1); + //if ((n+1)%30 == 0) rate *= .5; + show_image(im, "reconstruction"); +#ifdef OPENCV + cvWaitKey(10); +#endif + }else{ + int layer = max_layer + rand()%range - range/2; + int octave = rand()%octaves; + optimize_picture(&net, im, layer, 1/pow(1.33333333, octave), rate, thresh, norm); + } + } + fprintf(stderr, "done\n"); + char buff[256]; + if (prefix){ + sprintf(buff, "%s/%s_%s_%d_%06d",prefix, imbase, cfgbase, max_layer, e); + }else{ + sprintf(buff, "%s_%s_%d_%06d",imbase, cfgbase, max_layer, e); + } + printf("%d %s\n", e, buff); + save_image(im, buff); + //show_image(im, buff); + //cvWaitKey(0); + + if(rotate){ + image rot = rotate_image(im, rotate); + free_image(im); + im = rot; + } + image crop = crop_image(im, im.w * (1. - zoom)/2., im.h * (1.-zoom)/2., im.w*zoom, im.h*zoom); + image resized = resize_image(crop, im.w, im.h); + free_image(im); + free_image(crop); + im = resized; + } +} +*/ + +void run_nightmare(int argc, char **argv) +{ + srand(0); + if(argc < 4){ + fprintf(stderr, "usage: %s %s [cfg] [weights] [image] [layer] [options! (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[2]; + char *weights = argv[3]; + char *input = argv[4]; + int max_layer = atoi(argv[5]); + + int range = find_int_arg(argc, argv, "-range", 1); + int norm = find_int_arg(argc, argv, "-norm", 1); + int rounds = find_int_arg(argc, argv, "-rounds", 1); + int iters = find_int_arg(argc, argv, "-iters", 10); + int octaves = find_int_arg(argc, argv, "-octaves", 4); + float zoom = find_float_arg(argc, argv, "-zoom", 1.); + float rate = find_float_arg(argc, argv, "-rate", .04); + float thresh = find_float_arg(argc, argv, "-thresh", 1.); + float rotate = find_float_arg(argc, argv, "-rotate", 0); + float momentum = find_float_arg(argc, argv, "-momentum", .9); + float lambda = find_float_arg(argc, argv, "-lambda", .01); + char *prefix = find_char_arg(argc, argv, "-prefix", 0); + int reconstruct = find_arg(argc, argv, "-reconstruct"); + int smooth_size = find_int_arg(argc, argv, "-smooth", 1); + + network *net = load_network(cfg, weights, 0); + char *cfgbase = basecfg(cfg); + char *imbase = basecfg(input); + + set_batch_network(net, 1); + image im = load_image_color(input, 0, 0); + if(0){ + float scale = 1; + if(im.w > 512 || im.h > 512){ + if(im.w > im.h) scale = 512.0/im.w; + else scale = 512.0/im.h; + } + image resized = resize_image(im, scale*im.w, scale*im.h); + free_image(im); + im = resized; + } + //im = letterbox_image(im, net->w, net->h); + + float *features = 0; + image update; + if (reconstruct){ + net->n = max_layer; + im = letterbox_image(im, net->w, net->h); + //resize_network(&net, im.w, im.h); + + network_predict(net, im.data); + if(net->layers[net->n-1].type == REGION){ + printf("region!\n"); + zero_objectness(net->layers[net->n-1]); + } + image out_im = copy_image(get_network_image(net)); + /* + image crop = crop_image(out_im, zz, zz, out_im.w-2*zz, out_im.h-2*zz); + //flip_image(crop); + image f_im = resize_image(crop, out_im.w, out_im.h); + free_image(crop); + */ + printf("%d features\n", out_im.w*out_im.h*out_im.c); + + features = out_im.data; + + /* + int i; + for(i = 0; i < 14*14*512; ++i){ + //features[i] += rand_uniform(-.19, .19); + } + free_image(im); + im = make_random_image(im.w, im.h, im.c); + */ + update = make_image(im.w, im.h, im.c); + } + + int e; + int n; + for(e = 0; e < rounds; ++e){ + fprintf(stderr, "Iteration: "); + fflush(stderr); + for(n = 0; n < iters; ++n){ + fprintf(stderr, "%d, ", n); + fflush(stderr); + if(reconstruct){ + reconstruct_picture(net, features, im, update, rate, momentum, lambda, smooth_size, 1); + //if ((n+1)%30 == 0) rate *= .5; + show_image(im, "reconstruction", 10); + }else{ + int layer = max_layer + rand()%range - range/2; + int octave = rand()%octaves; + optimize_picture(net, im, layer, 1/pow(1.33333333, octave), rate, thresh, norm); + } + } + fprintf(stderr, "done\n"); + if(0){ + image g = grayscale_image(im); + free_image(im); + im = g; + } + char buff[256]; + if (prefix){ + sprintf(buff, "%s/%s_%s_%d_%06d",prefix, imbase, cfgbase, max_layer, e); + }else{ + sprintf(buff, "%s_%s_%d_%06d",imbase, cfgbase, max_layer, e); + } + printf("%d %s\n", e, buff); + save_image(im, buff); + //show_image(im, buff, 0); + + if(rotate){ + image rot = rotate_image(im, rotate); + free_image(im); + im = rot; + } + image crop = crop_image(im, im.w * (1. - zoom)/2., im.h * (1.-zoom)/2., im.w*zoom, im.h*zoom); + image resized = resize_image(crop, im.w, im.h); + free_image(im); + free_image(crop); + im = resized; + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/regressor.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/regressor.c" new file mode 100644 index 00000000..20cec0fa --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/regressor.c" @@ -0,0 +1,240 @@ +#include "darknet.h" +#include +#include + +void train_regressor(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear) +{ + int i; + + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + printf("%d\n", ngpus); + network **nets = calloc(ngpus, sizeof(network*)); + + srand(time(0)); + int seed = rand(); + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + srand(time(0)); + network *net = nets[0]; + + int imgs = net->batch * net->subdivisions * ngpus; + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + list *options = read_data_cfg(datacfg); + + char *backup_directory = option_find_str(options, "backup", "/backup/"); + char *train_list = option_find_str(options, "train", "data/train.list"); + int classes = option_find_int(options, "classes", 1); + + list *plist = get_paths(train_list); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + int N = plist->size; + clock_t time; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.threads = 32; + args.classes = classes; + + args.min = net->min_ratio*net->w; + args.max = net->max_ratio*net->w; + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + args.size = net->w; + + args.paths = paths; + args.n = imgs; + args.m = N; + args.type = REGRESSION_DATA; + + data train; + data buffer; + pthread_t load_thread; + args.d = &buffer; + load_thread = load_data(args); + + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + time=clock(); + + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + time=clock(); + + float loss = 0; +#ifdef GPU + if(ngpus == 1){ + loss = train_network(net, train); + } else { + loss = train_networks(nets, ngpus, train, 4); + } +#else + loss = train_network(net, train); +#endif + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), sec(clock()-time), *net->seen); + free_data(train); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + free_network(net); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void predict_regressor(char *cfgfile, char *weightfile, char *filename) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image sized = letterbox_image(im, net->w, net->h); + + float *X = sized.data; + time=clock(); + float *predictions = network_predict(net, X); + printf("Predicted: %f\n", predictions[0]); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + free_image(im); + free_image(sized); + if (filename) break; + } +} + + +void demo_regressor(char *datacfg, char *cfgfile, char *weightfile, int cam_index, const char *filename) +{ +#ifdef OPENCV + printf("Regressor Demo\n"); + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + + srand(2222222); + list *options = read_data_cfg(datacfg); + int classes = option_find_int(options, "classes", 1); + char *name_list = option_find_str(options, "names", 0); + char **names = get_labels(name_list); + + void * cap = open_video_stream(filename, cam_index, 0,0,0); + if(!cap) error("Couldn't connect to webcam.\n"); + float fps = 0; + + while(1){ + struct timeval tval_before, tval_after, tval_result; + gettimeofday(&tval_before, NULL); + + image in = get_image_from_stream(cap); + image crop = center_crop_image(in, net->w, net->h); + grayscale_image_3c(crop); + + float *predictions = network_predict(net, crop.data); + + printf("\033[2J"); + printf("\033[1;1H"); + printf("\nFPS:%.0f\n",fps); + + int i; + for(i = 0; i < classes; ++i){ + printf("%s: %f\n", names[i], predictions[i]); + } + + show_image(crop, "Regressor", 10); + free_image(in); + free_image(crop); + + gettimeofday(&tval_after, NULL); + timersub(&tval_after, &tval_before, &tval_result); + float curr = 1000000.f/((long int)tval_result.tv_usec); + fps = .9*fps + .1*curr; + } +#endif +} + + +void run_regressor(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + int *gpus = 0; + int gpu = 0; + int ngpus = 0; + if(gpu_list){ + printf("%s\n", gpu_list); + int len = strlen(gpu_list); + ngpus = 1; + int i; + for(i = 0; i < len; ++i){ + if (gpu_list[i] == ',') ++ngpus; + } + gpus = calloc(ngpus, sizeof(int)); + for(i = 0; i < ngpus; ++i){ + gpus[i] = atoi(gpu_list); + gpu_list = strchr(gpu_list, ',')+1; + } + } else { + gpu = gpu_index; + gpus = &gpu; + ngpus = 1; + } + + int cam_index = find_int_arg(argc, argv, "-c", 0); + int clear = find_arg(argc, argv, "-clear"); + char *data = argv[3]; + char *cfg = argv[4]; + char *weights = (argc > 5) ? argv[5] : 0; + char *filename = (argc > 6) ? argv[6]: 0; + if(0==strcmp(argv[2], "test")) predict_regressor(data, cfg, weights); + else if(0==strcmp(argv[2], "train")) train_regressor(data, cfg, weights, gpus, ngpus, clear); + else if(0==strcmp(argv[2], "demo")) demo_regressor(data, cfg, weights, cam_index, filename); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/rnn.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/rnn.c" new file mode 100644 index 00000000..5d49eaae --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/rnn.c" @@ -0,0 +1,542 @@ +#include "darknet.h" + +#include + +typedef struct { + float *x; + float *y; +} float_pair; + +unsigned char **load_files(char *filename, int *n) +{ + list *paths = get_paths(filename); + *n = paths->size; + unsigned char **contents = calloc(*n, sizeof(char *)); + int i; + node *x = paths->front; + for(i = 0; i < *n; ++i){ + contents[i] = read_file((char *)x->val); + x = x->next; + } + return contents; +} + +int *read_tokenized_data(char *filename, size_t *read) +{ + size_t size = 512; + size_t count = 0; + FILE *fp = fopen(filename, "r"); + int *d = calloc(size, sizeof(int)); + int n, one; + one = fscanf(fp, "%d", &n); + while(one == 1){ + ++count; + if(count > size){ + size = size*2; + d = realloc(d, size*sizeof(int)); + } + d[count-1] = n; + one = fscanf(fp, "%d", &n); + } + fclose(fp); + d = realloc(d, count*sizeof(int)); + *read = count; + return d; +} + +char **read_tokens(char *filename, size_t *read) +{ + size_t size = 512; + size_t count = 0; + FILE *fp = fopen(filename, "r"); + char **d = calloc(size, sizeof(char *)); + char *line; + while((line=fgetl(fp)) != 0){ + ++count; + if(count > size){ + size = size*2; + d = realloc(d, size*sizeof(char *)); + } + if(0==strcmp(line, "")) line = "\n"; + d[count-1] = line; + } + fclose(fp); + d = realloc(d, count*sizeof(char *)); + *read = count; + return d; +} + + +float_pair get_rnn_token_data(int *tokens, size_t *offsets, int characters, size_t len, int batch, int steps) +{ + float *x = calloc(batch * steps * characters, sizeof(float)); + float *y = calloc(batch * steps * characters, sizeof(float)); + int i,j; + for(i = 0; i < batch; ++i){ + for(j = 0; j < steps; ++j){ + int curr = tokens[(offsets[i])%len]; + int next = tokens[(offsets[i] + 1)%len]; + + x[(j*batch + i)*characters + curr] = 1; + y[(j*batch + i)*characters + next] = 1; + + offsets[i] = (offsets[i] + 1) % len; + + if(curr >= characters || curr < 0 || next >= characters || next < 0){ + error("Bad char"); + } + } + } + float_pair p; + p.x = x; + p.y = y; + return p; +} + +float_pair get_seq2seq_data(char **source, char **dest, int n, int characters, size_t len, int batch, int steps) +{ + int i,j; + float *x = calloc(batch * steps * characters, sizeof(float)); + float *y = calloc(batch * steps * characters, sizeof(float)); + for(i = 0; i < batch; ++i){ + int index = rand()%n; + //int slen = strlen(source[index]); + //int dlen = strlen(dest[index]); + for(j = 0; j < steps; ++j){ + unsigned char curr = source[index][j]; + unsigned char next = dest[index][j]; + + x[(j*batch + i)*characters + curr] = 1; + y[(j*batch + i)*characters + next] = 1; + + if(curr > 255 || curr <= 0 || next > 255 || next <= 0){ + /*text[(index+j+2)%len] = 0; + printf("%ld %d %d %d %d\n", index, j, len, (int)text[index+j], (int)text[index+j+1]); + printf("%s", text+index); + */ + error("Bad char"); + } + } + } + float_pair p; + p.x = x; + p.y = y; + return p; +} + +float_pair get_rnn_data(unsigned char *text, size_t *offsets, int characters, size_t len, int batch, int steps) +{ + float *x = calloc(batch * steps * characters, sizeof(float)); + float *y = calloc(batch * steps * characters, sizeof(float)); + int i,j; + for(i = 0; i < batch; ++i){ + for(j = 0; j < steps; ++j){ + unsigned char curr = text[(offsets[i])%len]; + unsigned char next = text[(offsets[i] + 1)%len]; + + x[(j*batch + i)*characters + curr] = 1; + y[(j*batch + i)*characters + next] = 1; + + offsets[i] = (offsets[i] + 1) % len; + + if(curr > 255 || curr <= 0 || next > 255 || next <= 0){ + /*text[(index+j+2)%len] = 0; + printf("%ld %d %d %d %d\n", index, j, len, (int)text[index+j], (int)text[index+j+1]); + printf("%s", text+index); + */ + error("Bad char"); + } + } + } + float_pair p; + p.x = x; + p.y = y; + return p; +} + +void train_char_rnn(char *cfgfile, char *weightfile, char *filename, int clear, int tokenized) +{ + srand(time(0)); + unsigned char *text = 0; + int *tokens = 0; + size_t size; + if(tokenized){ + tokens = read_tokenized_data(filename, &size); + } else { + text = read_file(filename); + size = strlen((const char*)text); + } + + char *backup_directory = "/home/pjreddie/backup/"; + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + float avg_loss = -1; + network *net = load_network(cfgfile, weightfile, clear); + + int inputs = net->inputs; + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g, Inputs: %d %d %d\n", net->learning_rate, net->momentum, net->decay, inputs, net->batch, net->time_steps); + int batch = net->batch; + int steps = net->time_steps; + if(clear) *net->seen = 0; + int i = (*net->seen)/net->batch; + + int streams = batch/steps; + size_t *offsets = calloc(streams, sizeof(size_t)); + int j; + for(j = 0; j < streams; ++j){ + offsets[j] = rand_size_t()%size; + } + + clock_t time; + while(get_current_batch(net) < net->max_batches){ + i += 1; + time=clock(); + float_pair p; + if(tokenized){ + p = get_rnn_token_data(tokens, offsets, inputs, size, streams, steps); + }else{ + p = get_rnn_data(text, offsets, inputs, size, streams, steps); + } + + copy_cpu(net->inputs*net->batch, p.x, 1, net->input, 1); + copy_cpu(net->truths*net->batch, p.y, 1, net->truth, 1); + float loss = train_network_datum(net) / (batch); + free(p.x); + free(p.y); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + size_t chars = get_current_batch(net)*batch; + fprintf(stderr, "%d: %f, %f avg, %f rate, %lf seconds, %f epochs\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), (float) chars/size); + + for(j = 0; j < streams; ++j){ + //printf("%d\n", j); + if(rand()%64 == 0){ + //fprintf(stderr, "Reset\n"); + offsets[j] = rand_size_t()%size; + reset_network_state(net, j); + } + } + + if(i%10000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + +void print_symbol(int n, char **tokens){ + if(tokens){ + printf("%s ", tokens[n]); + } else { + printf("%c", n); + } +} + +void test_char_rnn(char *cfgfile, char *weightfile, int num, char *seed, float temp, int rseed, char *token_file) +{ + char **tokens = 0; + if(token_file){ + size_t n; + tokens = read_tokens(token_file, &n); + } + + srand(rseed); + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + + network *net = load_network(cfgfile, weightfile, 0); + int inputs = net->inputs; + + int i, j; + for(i = 0; i < net->n; ++i) net->layers[i].temperature = temp; + int c = 0; + int len = strlen(seed); + float *input = calloc(inputs, sizeof(float)); + + /* + fill_cpu(inputs, 0, input, 1); + for(i = 0; i < 10; ++i){ + network_predict(net, input); + } + fill_cpu(inputs, 0, input, 1); + */ + + for(i = 0; i < len-1; ++i){ + c = seed[i]; + input[c] = 1; + network_predict(net, input); + input[c] = 0; + print_symbol(c, tokens); + } + if(len) c = seed[len-1]; + print_symbol(c, tokens); + for(i = 0; i < num; ++i){ + input[c] = 1; + float *out = network_predict(net, input); + input[c] = 0; + for(j = 32; j < 127; ++j){ + //printf("%d %c %f\n",j, j, out[j]); + } + for(j = 0; j < inputs; ++j){ + if (out[j] < .0001) out[j] = 0; + } + c = sample_array(out, inputs); + print_symbol(c, tokens); + } + printf("\n"); +} + +void test_tactic_rnn_multi(char *cfgfile, char *weightfile, int num, float temp, int rseed, char *token_file) +{ + char **tokens = 0; + if(token_file){ + size_t n; + tokens = read_tokens(token_file, &n); + } + + srand(rseed); + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + + network *net = load_network(cfgfile, weightfile, 0); + int inputs = net->inputs; + + int i, j; + for(i = 0; i < net->n; ++i) net->layers[i].temperature = temp; + int c = 0; + float *input = calloc(inputs, sizeof(float)); + float *out = 0; + + while(1){ + reset_network_state(net, 0); + while((c = getc(stdin)) != EOF && c != 0){ + input[c] = 1; + out = network_predict(net, input); + input[c] = 0; + } + for(i = 0; i < num; ++i){ + for(j = 0; j < inputs; ++j){ + if (out[j] < .0001) out[j] = 0; + } + int next = sample_array(out, inputs); + if(c == '.' && next == '\n') break; + c = next; + print_symbol(c, tokens); + + input[c] = 1; + out = network_predict(net, input); + input[c] = 0; + } + printf("\n"); + } +} + +void test_tactic_rnn(char *cfgfile, char *weightfile, int num, float temp, int rseed, char *token_file) +{ + char **tokens = 0; + if(token_file){ + size_t n; + tokens = read_tokens(token_file, &n); + } + + srand(rseed); + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + + network *net = load_network(cfgfile, weightfile, 0); + int inputs = net->inputs; + + int i, j; + for(i = 0; i < net->n; ++i) net->layers[i].temperature = temp; + int c = 0; + float *input = calloc(inputs, sizeof(float)); + float *out = 0; + + while((c = getc(stdin)) != EOF){ + input[c] = 1; + out = network_predict(net, input); + input[c] = 0; + } + for(i = 0; i < num; ++i){ + for(j = 0; j < inputs; ++j){ + if (out[j] < .0001) out[j] = 0; + } + int next = sample_array(out, inputs); + if(c == '.' && next == '\n') break; + c = next; + print_symbol(c, tokens); + + input[c] = 1; + out = network_predict(net, input); + input[c] = 0; + } + printf("\n"); +} + +void valid_tactic_rnn(char *cfgfile, char *weightfile, char *seed) +{ + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + + network *net = load_network(cfgfile, weightfile, 0); + int inputs = net->inputs; + + int count = 0; + int words = 1; + int c; + int len = strlen(seed); + float *input = calloc(inputs, sizeof(float)); + int i; + for(i = 0; i < len; ++i){ + c = seed[i]; + input[(int)c] = 1; + network_predict(net, input); + input[(int)c] = 0; + } + float sum = 0; + c = getc(stdin); + float log2 = log(2); + int in = 0; + while(c != EOF){ + int next = getc(stdin); + if(next == EOF) break; + if(next < 0 || next >= 255) error("Out of range character"); + + input[c] = 1; + float *out = network_predict(net, input); + input[c] = 0; + + if(c == '.' && next == '\n') in = 0; + if(!in) { + if(c == '>' && next == '>'){ + in = 1; + ++words; + } + c = next; + continue; + } + ++count; + sum += log(out[next])/log2; + c = next; + printf("%d %d Perplexity: %4.4f Word Perplexity: %4.4f\n", count, words, pow(2, -sum/count), pow(2, -sum/words)); + } +} + +void valid_char_rnn(char *cfgfile, char *weightfile, char *seed) +{ + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + + network *net = load_network(cfgfile, weightfile, 0); + int inputs = net->inputs; + + int count = 0; + int words = 1; + int c; + int len = strlen(seed); + float *input = calloc(inputs, sizeof(float)); + int i; + for(i = 0; i < len; ++i){ + c = seed[i]; + input[(int)c] = 1; + network_predict(net, input); + input[(int)c] = 0; + } + float sum = 0; + c = getc(stdin); + float log2 = log(2); + while(c != EOF){ + int next = getc(stdin); + if(next == EOF) break; + if(next < 0 || next >= 255) error("Out of range character"); + ++count; + if(next == ' ' || next == '\n' || next == '\t') ++words; + input[c] = 1; + float *out = network_predict(net, input); + input[c] = 0; + sum += log(out[next])/log2; + c = next; + printf("%d BPC: %4.4f Perplexity: %4.4f Word Perplexity: %4.4f\n", count, -sum/count, pow(2, -sum/count), pow(2, -sum/words)); + } +} + +void vec_char_rnn(char *cfgfile, char *weightfile, char *seed) +{ + char *base = basecfg(cfgfile); + fprintf(stderr, "%s\n", base); + + network *net = load_network(cfgfile, weightfile, 0); + int inputs = net->inputs; + + int c; + int seed_len = strlen(seed); + float *input = calloc(inputs, sizeof(float)); + int i; + char *line; + while((line=fgetl(stdin)) != 0){ + reset_network_state(net, 0); + for(i = 0; i < seed_len; ++i){ + c = seed[i]; + input[(int)c] = 1; + network_predict(net, input); + input[(int)c] = 0; + } + strip(line); + int str_len = strlen(line); + for(i = 0; i < str_len; ++i){ + c = line[i]; + input[(int)c] = 1; + network_predict(net, input); + input[(int)c] = 0; + } + c = ' '; + input[(int)c] = 1; + network_predict(net, input); + input[(int)c] = 0; + + layer l = net->layers[0]; + #ifdef GPU + cuda_pull_array(l.output_gpu, l.output, l.outputs); + #endif + printf("%s", line); + for(i = 0; i < l.outputs; ++i){ + printf(",%g", l.output[i]); + } + printf("\n"); + } +} + +void run_char_rnn(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + char *filename = find_char_arg(argc, argv, "-file", "data/shakespeare.txt"); + char *seed = find_char_arg(argc, argv, "-seed", "\n\n"); + int len = find_int_arg(argc, argv, "-len", 1000); + float temp = find_float_arg(argc, argv, "-temp", .7); + int rseed = find_int_arg(argc, argv, "-srand", time(0)); + int clear = find_arg(argc, argv, "-clear"); + int tokenized = find_arg(argc, argv, "-tokenized"); + char *tokens = find_char_arg(argc, argv, "-tokens", 0); + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + if(0==strcmp(argv[2], "train")) train_char_rnn(cfg, weights, filename, clear, tokenized); + else if(0==strcmp(argv[2], "valid")) valid_char_rnn(cfg, weights, seed); + else if(0==strcmp(argv[2], "validtactic")) valid_tactic_rnn(cfg, weights, seed); + else if(0==strcmp(argv[2], "vec")) vec_char_rnn(cfg, weights, seed); + else if(0==strcmp(argv[2], "generate")) test_char_rnn(cfg, weights, len, seed, temp, rseed, tokens); + else if(0==strcmp(argv[2], "generatetactic")) test_tactic_rnn(cfg, weights, len, temp, rseed, tokens); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/rnn_vid.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/rnn_vid.c" new file mode 100644 index 00000000..e8879235 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/rnn_vid.c" @@ -0,0 +1,208 @@ +#include "darknet.h" + +#ifdef OPENCV +image get_image_from_stream(CvCapture *cap); +image ipl_to_image(IplImage* src); + +void reconstruct_picture(network net, float *features, image recon, image update, float rate, float momentum, float lambda, int smooth_size, int iters); + + +typedef struct { + float *x; + float *y; +} float_pair; + +float_pair get_rnn_vid_data(network net, char **files, int n, int batch, int steps) +{ + int b; + assert(net.batch == steps + 1); + image out_im = get_network_image(net); + int output_size = out_im.w*out_im.h*out_im.c; + printf("%d %d %d\n", out_im.w, out_im.h, out_im.c); + float *feats = calloc(net.batch*batch*output_size, sizeof(float)); + for(b = 0; b < batch; ++b){ + int input_size = net.w*net.h*net.c; + float *input = calloc(input_size*net.batch, sizeof(float)); + char *filename = files[rand()%n]; + CvCapture *cap = cvCaptureFromFile(filename); + int frames = cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_COUNT); + int index = rand() % (frames - steps - 2); + if (frames < (steps + 4)){ + --b; + free(input); + continue; + } + + printf("frames: %d, index: %d\n", frames, index); + cvSetCaptureProperty(cap, CV_CAP_PROP_POS_FRAMES, index); + + int i; + for(i = 0; i < net.batch; ++i){ + IplImage* src = cvQueryFrame(cap); + image im = ipl_to_image(src); + rgbgr_image(im); + image re = resize_image(im, net.w, net.h); + //show_image(re, "loaded"); + //cvWaitKey(10); + memcpy(input + i*input_size, re.data, input_size*sizeof(float)); + free_image(im); + free_image(re); + } + float *output = network_predict(net, input); + + free(input); + + for(i = 0; i < net.batch; ++i){ + memcpy(feats + (b + i*batch)*output_size, output + i*output_size, output_size*sizeof(float)); + } + + cvReleaseCapture(&cap); + } + + //printf("%d %d %d\n", out_im.w, out_im.h, out_im.c); + float_pair p = {0}; + p.x = feats; + p.y = feats + output_size*batch; //+ out_im.w*out_im.h*out_im.c; + + return p; +} + + +void train_vid_rnn(char *cfgfile, char *weightfile) +{ + char *train_videos = "data/vid/train.txt"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay); + int imgs = net.batch*net.subdivisions; + int i = *net.seen/imgs; + + list *plist = get_paths(train_videos); + int N = plist->size; + char **paths = (char **)list_to_array(plist); + clock_t time; + int steps = net.time_steps; + int batch = net.batch / net.time_steps; + + network extractor = parse_network_cfg("cfg/extractor.cfg"); + load_weights(&extractor, "/home/pjreddie/trained/yolo-coco.conv"); + + while(get_current_batch(net) < net.max_batches){ + i += 1; + time=clock(); + float_pair p = get_rnn_vid_data(extractor, paths, N, batch, steps); + + copy_cpu(net.inputs*net.batch, p.x, 1, net.input, 1); + copy_cpu(net.truths*net.batch, p.y, 1, net.truth, 1); + float loss = train_network_datum(net) / (net.batch); + + + free(p.x); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + fprintf(stderr, "%d: %f, %f avg, %f rate, %lf seconds\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time)); + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + if(i%10==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + + +image save_reconstruction(network net, image *init, float *feat, char *name, int i) +{ + image recon; + if (init) { + recon = copy_image(*init); + } else { + recon = make_random_image(net.w, net.h, 3); + } + + image update = make_image(net.w, net.h, 3); + reconstruct_picture(net, feat, recon, update, .01, .9, .1, 2, 50); + char buff[256]; + sprintf(buff, "%s%d", name, i); + save_image(recon, buff); + free_image(update); + return recon; +} + +void generate_vid_rnn(char *cfgfile, char *weightfile) +{ + network extractor = parse_network_cfg("cfg/extractor.recon.cfg"); + load_weights(&extractor, "/home/pjreddie/trained/yolo-coco.conv"); + + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + set_batch_network(&extractor, 1); + set_batch_network(&net, 1); + + int i; + CvCapture *cap = cvCaptureFromFile("/extra/vid/ILSVRC2015/Data/VID/snippets/val/ILSVRC2015_val_00007030.mp4"); + float *feat; + float *next; + image last; + for(i = 0; i < 25; ++i){ + image im = get_image_from_stream(cap); + image re = resize_image(im, extractor.w, extractor.h); + feat = network_predict(extractor, re.data); + if(i > 0){ + printf("%f %f\n", mean_array(feat, 14*14*512), variance_array(feat, 14*14*512)); + printf("%f %f\n", mean_array(next, 14*14*512), variance_array(next, 14*14*512)); + printf("%f\n", mse_array(feat, 14*14*512)); + axpy_cpu(14*14*512, -1, feat, 1, next, 1); + printf("%f\n", mse_array(next, 14*14*512)); + } + next = network_predict(net, feat); + + free_image(im); + + free_image(save_reconstruction(extractor, 0, feat, "feat", i)); + free_image(save_reconstruction(extractor, 0, next, "next", i)); + if (i==24) last = copy_image(re); + free_image(re); + } + for(i = 0; i < 30; ++i){ + next = network_predict(net, next); + image new = save_reconstruction(extractor, &last, next, "new", i); + free_image(last); + last = new; + } +} + +void run_vid_rnn(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + //char *filename = (argc > 5) ? argv[5]: 0; + if(0==strcmp(argv[2], "train")) train_vid_rnn(cfg, weights); + else if(0==strcmp(argv[2], "generate")) generate_vid_rnn(cfg, weights); +} +#else +void run_vid_rnn(int argc, char **argv){} +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/segmenter.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/segmenter.c" new file mode 100644 index 00000000..2e7cea0b --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/segmenter.c" @@ -0,0 +1,255 @@ +#include "darknet.h" +#include +#include + +void train_segmenter(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear, int display) +{ + int i; + + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + printf("%d\n", ngpus); + network **nets = calloc(ngpus, sizeof(network*)); + + srand(time(0)); + int seed = rand(); + for(i = 0; i < ngpus; ++i){ + srand(seed); +#ifdef GPU + cuda_set_device(gpus[i]); +#endif + nets[i] = load_network(cfgfile, weightfile, clear); + nets[i]->learning_rate *= ngpus; + } + srand(time(0)); + network *net = nets[0]; + image pred = get_network_image(net); + + int div = net->w/pred.w; + assert(pred.w * div == net->w); + assert(pred.h * div == net->h); + + int imgs = net->batch * net->subdivisions * ngpus; + + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + list *options = read_data_cfg(datacfg); + + char *backup_directory = option_find_str(options, "backup", "/backup/"); + char *train_list = option_find_str(options, "train", "data/train.list"); + + list *plist = get_paths(train_list); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + int N = plist->size; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.threads = 32; + args.scale = div; + + args.min = net->min_crop; + args.max = net->max_crop; + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + args.size = net->w; + args.classes = 80; + + args.paths = paths; + args.n = imgs; + args.m = N; + args.type = SEGMENTATION_DATA; + + data train; + data buffer; + pthread_t load_thread; + args.d = &buffer; + load_thread = load_data(args); + + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + double time = what_time_is_it_now(); + + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data(args); + + printf("Loaded: %lf seconds\n", what_time_is_it_now()-time); + time = what_time_is_it_now(); + + float loss = 0; +#ifdef GPU + if(ngpus == 1){ + loss = train_network(net, train); + } else { + loss = train_networks(nets, ngpus, train, 4); + } +#else + loss = train_network(net, train); +#endif + if(display){ + image tr = float_to_image(net->w/div, net->h/div, 80, train.y.vals[net->batch*(net->subdivisions-1)]); + image im = float_to_image(net->w, net->h, net->c, train.X.vals[net->batch*(net->subdivisions-1)]); + image mask = mask_to_rgb(tr); + image prmask = mask_to_rgb(pred); + show_image(im, "input", 1); + show_image(prmask, "pred", 1); + show_image(mask, "truth", 100); + free_image(mask); + free_image(prmask); + } + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), what_time_is_it_now()-time, *net->seen); + free_data(train); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + free_network(net); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void predict_segmenter(char *datafile, char *cfg, char *weights, char *filename) +{ + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image sized = letterbox_image(im, net->w, net->h); + + float *X = sized.data; + time=clock(); + float *predictions = network_predict(net, X); + image pred = get_network_image(net); + image prmask = mask_to_rgb(pred); + printf("Predicted: %f\n", predictions[0]); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + show_image(sized, "orig", 1); + show_image(prmask, "pred", 0); + free_image(im); + free_image(sized); + free_image(prmask); + if (filename) break; + } +} + + +void demo_segmenter(char *datacfg, char *cfg, char *weights, int cam_index, const char *filename) +{ +#ifdef OPENCV + printf("Classifier Demo\n"); + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + + srand(2222222); + void * cap = open_video_stream(filename, cam_index, 0,0,0); + + if(!cap) error("Couldn't connect to webcam.\n"); + float fps = 0; + + while(1){ + struct timeval tval_before, tval_after, tval_result; + gettimeofday(&tval_before, NULL); + + image in = get_image_from_stream(cap); + image in_s = letterbox_image(in, net->w, net->h); + + network_predict(net, in_s.data); + + printf("\033[2J"); + printf("\033[1;1H"); + printf("\nFPS:%.0f\n",fps); + + image pred = get_network_image(net); + image prmask = mask_to_rgb(pred); + show_image(prmask, "Segmenter", 10); + + free_image(in_s); + free_image(in); + free_image(prmask); + + gettimeofday(&tval_after, NULL); + timersub(&tval_after, &tval_before, &tval_result); + float curr = 1000000.f/((long int)tval_result.tv_usec); + fps = .9*fps + .1*curr; + } +#endif +} + + +void run_segmenter(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *gpu_list = find_char_arg(argc, argv, "-gpus", 0); + int *gpus = 0; + int gpu = 0; + int ngpus = 0; + if(gpu_list){ + printf("%s\n", gpu_list); + int len = strlen(gpu_list); + ngpus = 1; + int i; + for(i = 0; i < len; ++i){ + if (gpu_list[i] == ',') ++ngpus; + } + gpus = calloc(ngpus, sizeof(int)); + for(i = 0; i < ngpus; ++i){ + gpus[i] = atoi(gpu_list); + gpu_list = strchr(gpu_list, ',')+1; + } + } else { + gpu = gpu_index; + gpus = &gpu; + ngpus = 1; + } + + int cam_index = find_int_arg(argc, argv, "-c", 0); + int clear = find_arg(argc, argv, "-clear"); + int display = find_arg(argc, argv, "-display"); + char *data = argv[3]; + char *cfg = argv[4]; + char *weights = (argc > 5) ? argv[5] : 0; + char *filename = (argc > 6) ? argv[6]: 0; + if(0==strcmp(argv[2], "test")) predict_segmenter(data, cfg, weights, filename); + else if(0==strcmp(argv[2], "train")) train_segmenter(data, cfg, weights, gpus, ngpus, clear, display); + else if(0==strcmp(argv[2], "demo")) demo_segmenter(data, cfg, weights, cam_index, filename); +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/super.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/super.c" new file mode 100644 index 00000000..d34406b1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/super.c" @@ -0,0 +1,120 @@ +#include "darknet.h" + +void train_super(char *cfgfile, char *weightfile, int clear) +{ + char *train_images = "/data/imagenet/imagenet1k.train.list"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network *net = load_network(cfgfile, weightfile, clear); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = net->batch*net->subdivisions; + int i = *net->seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.scale = 4; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.d = &buffer; + args.type = SUPER_DATA; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + //while(i*imgs < N*120){ + while(get_current_batch(net) < net->max_batches){ + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + time=clock(); + float loss = train_network(net, train); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + printf("%d: %f, %f avg, %f rate, %lf seconds, %d images\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + } + free_data(train); + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + +void test_super(char *cfgfile, char *weightfile, char *filename) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + resize_network(net, im.w, im.h); + printf("%d %d\n", im.w, im.h); + + float *X = im.data; + time=clock(); + network_predict(net, X); + image out = get_network_image(net); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + save_image(out, "out"); + show_image(out, "out", 0); + + free_image(im); + if (filename) break; + } +} + + +void run_super(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5] : 0; + int clear = find_arg(argc, argv, "-clear"); + if(0==strcmp(argv[2], "train")) train_super(cfg, weights, clear); + else if(0==strcmp(argv[2], "test")) test_super(cfg, weights, filename); + /* + else if(0==strcmp(argv[2], "valid")) validate_super(cfg, weights); + */ +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/swag.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/swag.c" new file mode 100644 index 00000000..c22d7855 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/swag.c" @@ -0,0 +1,83 @@ +#include "darknet.h" +#include + +void train_swag(char *cfgfile, char *weightfile) +{ + char *train_images = "data/voc.0712.trainval"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay); + int imgs = net.batch*net.subdivisions; + int i = *net.seen/imgs; + data train, buffer; + + layer l = net.layers[net.n - 1]; + + int side = l.side; + int classes = l.classes; + float jitter = l.jitter; + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = {0}; + args.w = net.w; + args.h = net.h; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.classes = classes; + args.jitter = jitter; + args.num_boxes = side; + args.d = &buffer; + args.type = REGION_DATA; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + //while(i*imgs < N*120){ + while(get_current_batch(net) < net.max_batches){ + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + time=clock(); + float loss = train_network(net, train); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + printf("%d: %f, %f avg, %f rate, %lf seconds, %d images\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0 || i == 600){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + free_data(train); + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + +void run_swag(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + if(0==strcmp(argv[2], "train")) train_swag(cfg, weights); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/tag.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/tag.c" new file mode 100644 index 00000000..4caf8cba --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/tag.c" @@ -0,0 +1,140 @@ +#include "darknet.h" + +void train_tag(char *cfgfile, char *weightfile, int clear) +{ + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + char *backup_directory = "/home/pjreddie/backup/"; + printf("%s\n", base); + network *net = load_network(cfgfile, weightfile, clear); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = 1024; + list *plist = get_paths("/home/pjreddie/tag/train.list"); + char **paths = (char **)list_to_array(plist); + printf("%d\n", plist->size); + int N = plist->size; + clock_t time; + pthread_t load_thread; + data train; + data buffer; + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + + args.min = net->w; + args.max = net->max_crop; + args.size = net->w; + + args.paths = paths; + args.classes = net->outputs; + args.n = imgs; + args.m = N; + args.d = &buffer; + args.type = TAG_DATA; + + args.angle = net->angle; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + + fprintf(stderr, "%d classes\n", net->outputs); + + load_thread = load_data_in_thread(args); + int epoch = (*net->seen)/N; + while(get_current_batch(net) < net->max_batches || net->max_batches == 0){ + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + + load_thread = load_data_in_thread(args); + printf("Loaded: %lf seconds\n", sec(clock()-time)); + time=clock(); + float loss = train_network(net, train); + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net->seen)/N, loss, avg_loss, get_current_rate(net), sec(clock()-time), *net->seen); + free_data(train); + if(*net->seen/N > epoch){ + epoch = *net->seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s.backup",backup_directory,base); + save_weights(net, buff); + } + } + char buff[256]; + sprintf(buff, "%s/%s.weights", backup_directory, base); + save_weights(net, buff); + + pthread_join(load_thread, 0); + free_data(buffer); + free_network(net); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void test_tag(char *cfgfile, char *weightfile, char *filename) +{ + network *net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + srand(2222222); + int i = 0; + char **names = get_labels("data/tags.txt"); + clock_t time; + int indexes[10]; + char buff[256]; + char *input = buff; + int size = net->w; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + image r = resize_min(im, size); + resize_network(net, r.w, r.h); + printf("%d %d\n", r.w, r.h); + + float *X = r.data; + time=clock(); + float *predictions = network_predict(net, X); + top_predictions(net, 10, indexes); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + for(i = 0; i < 10; ++i){ + int index = indexes[i]; + printf("%.1f%%: %s\n", predictions[index]*100, names[index]); + } + if(r.data != im.data) free_image(r); + free_image(im); + if (filename) break; + } +} + + +void run_tag(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + int clear = find_arg(argc, argv, "-clear"); + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5] : 0; + if(0==strcmp(argv[2], "train")) train_tag(cfg, weights, clear); + else if(0==strcmp(argv[2], "test")) test_tag(cfg, weights, filename); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/voxel.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/voxel.c" new file mode 100644 index 00000000..01ea9bb9 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/voxel.c" @@ -0,0 +1,161 @@ +#include "darknet.h" + +void extract_voxel(char *lfile, char *rfile, char *prefix) +{ +#ifdef OPENCV + int w = 1920; + int h = 1080; + int shift = 0; + int count = 0; + CvCapture *lcap = cvCaptureFromFile(lfile); + CvCapture *rcap = cvCaptureFromFile(rfile); + while(1){ + image l = get_image_from_stream(lcap); + image r = get_image_from_stream(rcap); + if(!l.w || !r.w) break; + if(count%100 == 0) { + shift = best_3d_shift_r(l, r, -l.h/100, l.h/100); + printf("%d\n", shift); + } + image ls = crop_image(l, (l.w - w)/2, (l.h - h)/2, w, h); + image rs = crop_image(r, 105 + (r.w - w)/2, (r.h - h)/2 + shift, w, h); + char buff[256]; + sprintf(buff, "%s_%05d_l", prefix, count); + save_image(ls, buff); + sprintf(buff, "%s_%05d_r", prefix, count); + save_image(rs, buff); + free_image(l); + free_image(r); + free_image(ls); + free_image(rs); + ++count; + } + +#else + printf("need OpenCV for extraction\n"); +#endif +} + +void train_voxel(char *cfgfile, char *weightfile) +{ + char *train_images = "/data/imagenet/imagenet1k.train.list"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay); + int imgs = net.batch*net.subdivisions; + int i = *net.seen/imgs; + data train, buffer; + + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = {0}; + args.w = net.w; + args.h = net.h; + args.scale = 4; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.d = &buffer; + args.type = SUPER_DATA; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + //while(i*imgs < N*120){ + while(get_current_batch(net) < net.max_batches){ + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + time=clock(); + float loss = train_network(net, train); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + printf("%d: %f, %f avg, %f rate, %lf seconds, %d images\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + if(i%100==0){ + char buff[256]; + sprintf(buff, "%s/%s.backup", backup_directory, base); + save_weights(net, buff); + } + free_data(train); + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + +void test_voxel(char *cfgfile, char *weightfile, char *filename) +{ + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + set_batch_network(&net, 1); + srand(2222222); + + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input, 0, 0); + resize_network(&net, im.w, im.h); + printf("%d %d\n", im.w, im.h); + + float *X = im.data; + time=clock(); + network_predict(net, X); + image out = get_network_image(net); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + save_image(out, "out"); + + free_image(im); + if (filename) break; + } +} + + +void run_voxel(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5] : 0; + if(0==strcmp(argv[2], "train")) train_voxel(cfg, weights); + else if(0==strcmp(argv[2], "test")) test_voxel(cfg, weights, filename); + else if(0==strcmp(argv[2], "extract")) extract_voxel(argv[3], argv[4], argv[5]); + /* + else if(0==strcmp(argv[2], "valid")) validate_voxel(cfg, weights); + */ +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/writing.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/writing.c" new file mode 100644 index 00000000..1b6ff83b --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/writing.c" @@ -0,0 +1,144 @@ +#include "darknet.h" + +void train_writing(char *cfgfile, char *weightfile) +{ + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + printf("%s\n", base); + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay); + int imgs = net.batch*net.subdivisions; + list *plist = get_paths("figures.list"); + char **paths = (char **)list_to_array(plist); + clock_t time; + int N = plist->size; + printf("N: %d\n", N); + image out = get_network_image(net); + + data train, buffer; + + load_args args = {0}; + args.w = net.w; + args.h = net.h; + args.out_w = out.w; + args.out_h = out.h; + args.paths = paths; + args.n = imgs; + args.m = N; + args.d = &buffer; + args.type = WRITING_DATA; + + pthread_t load_thread = load_data_in_thread(args); + int epoch = (*net.seen)/N; + while(get_current_batch(net) < net.max_batches || net.max_batches == 0){ + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + printf("Loaded %lf seconds\n",sec(clock()-time)); + + time=clock(); + float loss = train_network(net, train); + + /* + image pred = float_to_image(64, 64, 1, out); + print_image(pred); + */ + + /* + image im = float_to_image(256, 256, 3, train.X.vals[0]); + image lab = float_to_image(64, 64, 1, train.y.vals[0]); + image pred = float_to_image(64, 64, 1, out); + show_image(im, "image"); + show_image(lab, "label"); + print_image(lab); + show_image(pred, "pred"); + cvWaitKey(0); + */ + + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n", get_current_batch(net), (float)(*net.seen)/N, loss, avg_loss, get_current_rate(net), sec(clock()-time), *net.seen); + free_data(train); + if(get_current_batch(net)%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s_batch_%ld.weights", backup_directory, base, get_current_batch(net)); + save_weights(net, buff); + } + if(*net.seen/N > epoch){ + epoch = *net.seen/N; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + } + } +} + +void test_writing(char *cfgfile, char *weightfile, char *filename) +{ + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + set_batch_network(&net, 1); + srand(2222222); + clock_t time; + char buff[256]; + char *input = buff; + while(1){ + if(filename){ + strncpy(input, filename, 256); + }else{ + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + + image im = load_image_color(input, 0, 0); + resize_network(&net, im.w, im.h); + printf("%d %d %d\n", im.h, im.w, im.c); + float *X = im.data; + time=clock(); + network_predict(net, X); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + image pred = get_network_image(net); + + image upsampled = resize_image(pred, im.w, im.h); + image thresh = threshold_image(upsampled, .5); + pred = thresh; + + show_image(pred, "prediction"); + show_image(im, "orig"); +#ifdef OPENCV + cvWaitKey(0); + cvDestroyAllWindows(); +#endif + + free_image(upsampled); + free_image(thresh); + free_image(im); + if (filename) break; + } +} + +void run_writing(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5] : 0; + if(0==strcmp(argv[2], "train")) train_writing(cfg, weights); + else if(0==strcmp(argv[2], "test")) test_writing(cfg, weights, filename); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/yolo.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/yolo.c" new file mode 100644 index 00000000..4ddb69a3 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/examples/yolo.c" @@ -0,0 +1,327 @@ +#include "darknet.h" + +char *voc_names[] = {"aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"}; + +void train_yolo(char *cfgfile, char *weightfile) +{ + char *train_images = "/data/voc/train.txt"; + char *backup_directory = "/home/pjreddie/backup/"; + srand(time(0)); + char *base = basecfg(cfgfile); + printf("%s\n", base); + float avg_loss = -1; + network *net = load_network(cfgfile, weightfile, 0); + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + int imgs = net->batch*net->subdivisions; + int i = *net->seen/imgs; + data train, buffer; + + + layer l = net->layers[net->n - 1]; + + int side = l.side; + int classes = l.classes; + float jitter = l.jitter; + + list *plist = get_paths(train_images); + //int N = plist->size; + char **paths = (char **)list_to_array(plist); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.paths = paths; + args.n = imgs; + args.m = plist->size; + args.classes = classes; + args.jitter = jitter; + args.num_boxes = side; + args.d = &buffer; + args.type = REGION_DATA; + + args.angle = net->angle; + args.exposure = net->exposure; + args.saturation = net->saturation; + args.hue = net->hue; + + pthread_t load_thread = load_data_in_thread(args); + clock_t time; + //while(i*imgs < N*120){ + while(get_current_batch(net) < net->max_batches){ + i += 1; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + load_thread = load_data_in_thread(args); + + printf("Loaded: %lf seconds\n", sec(clock()-time)); + + time=clock(); + float loss = train_network(net, train); + if (avg_loss < 0) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + + printf("%d: %f, %f avg, %f rate, %lf seconds, %d images\n", i, loss, avg_loss, get_current_rate(net), sec(clock()-time), i*imgs); + if(i%1000==0 || (i < 1000 && i%100 == 0)){ + char buff[256]; + sprintf(buff, "%s/%s_%d.weights", backup_directory, base, i); + save_weights(net, buff); + } + free_data(train); + } + char buff[256]; + sprintf(buff, "%s/%s_final.weights", backup_directory, base); + save_weights(net, buff); +} + +void print_yolo_detections(FILE **fps, char *id, int total, int classes, int w, int h, detection *dets) +{ + int i, j; + for(i = 0; i < total; ++i){ + float xmin = dets[i].bbox.x - dets[i].bbox.w/2.; + float xmax = dets[i].bbox.x + dets[i].bbox.w/2.; + float ymin = dets[i].bbox.y - dets[i].bbox.h/2.; + float ymax = dets[i].bbox.y + dets[i].bbox.h/2.; + + if (xmin < 0) xmin = 0; + if (ymin < 0) ymin = 0; + if (xmax > w) xmax = w; + if (ymax > h) ymax = h; + + for(j = 0; j < classes; ++j){ + if (dets[i].prob[j]) fprintf(fps[j], "%s %f %f %f %f %f\n", id, dets[i].prob[j], + xmin, ymin, xmax, ymax); + } + } +} + +void validate_yolo(char *cfg, char *weights) +{ + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + char *base = "results/comp4_det_test_"; + //list *plist = get_paths("data/voc.2007.test"); + list *plist = get_paths("/home/pjreddie/data/voc/2007_test.txt"); + //list *plist = get_paths("data/voc.2012.test"); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + int classes = l.classes; + + int j; + FILE **fps = calloc(classes, sizeof(FILE *)); + for(j = 0; j < classes; ++j){ + char buff[1024]; + snprintf(buff, 1024, "%s%s.txt", base, voc_names[j]); + fps[j] = fopen(buff, "w"); + } + + int m = plist->size; + int i=0; + int t; + + float thresh = .001; + int nms = 1; + float iou_thresh = .5; + + int nthreads = 8; + image *val = calloc(nthreads, sizeof(image)); + image *val_resized = calloc(nthreads, sizeof(image)); + image *buf = calloc(nthreads, sizeof(image)); + image *buf_resized = calloc(nthreads, sizeof(image)); + pthread_t *thr = calloc(nthreads, sizeof(pthread_t)); + + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.type = IMAGE_DATA; + + for(t = 0; t < nthreads; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + time_t start = time(0); + for(i = nthreads; i < m+nthreads; i += nthreads){ + fprintf(stderr, "%d\n", i); + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + pthread_join(thr[t], 0); + val[t] = buf[t]; + val_resized[t] = buf_resized[t]; + } + for(t = 0; t < nthreads && i+t < m; ++t){ + args.path = paths[i+t]; + args.im = &buf[t]; + args.resized = &buf_resized[t]; + thr[t] = load_data_in_thread(args); + } + for(t = 0; t < nthreads && i+t-nthreads < m; ++t){ + char *path = paths[i+t-nthreads]; + char *id = basecfg(path); + float *X = val_resized[t].data; + network_predict(net, X); + int w = val[t].w; + int h = val[t].h; + int nboxes = 0; + detection *dets = get_network_boxes(net, w, h, thresh, 0, 0, 0, &nboxes); + if (nms) do_nms_sort(dets, l.side*l.side*l.n, classes, iou_thresh); + print_yolo_detections(fps, id, l.side*l.side*l.n, classes, w, h, dets); + free_detections(dets, nboxes); + free(id); + free_image(val[t]); + free_image(val_resized[t]); + } + } + fprintf(stderr, "Total Detection Time: %f Seconds\n", (double)(time(0) - start)); +} + +void validate_yolo_recall(char *cfg, char *weights) +{ + network *net = load_network(cfg, weights, 0); + set_batch_network(net, 1); + fprintf(stderr, "Learning Rate: %g, Momentum: %g, Decay: %g\n", net->learning_rate, net->momentum, net->decay); + srand(time(0)); + + char *base = "results/comp4_det_test_"; + list *plist = get_paths("data/voc.2007.test"); + char **paths = (char **)list_to_array(plist); + + layer l = net->layers[net->n-1]; + int classes = l.classes; + int side = l.side; + + int j, k; + FILE **fps = calloc(classes, sizeof(FILE *)); + for(j = 0; j < classes; ++j){ + char buff[1024]; + snprintf(buff, 1024, "%s%s.txt", base, voc_names[j]); + fps[j] = fopen(buff, "w"); + } + + int m = plist->size; + int i=0; + + float thresh = .001; + float iou_thresh = .5; + float nms = 0; + + int total = 0; + int correct = 0; + int proposals = 0; + float avg_iou = 0; + + for(i = 0; i < m; ++i){ + char *path = paths[i]; + image orig = load_image_color(path, 0, 0); + image sized = resize_image(orig, net->w, net->h); + char *id = basecfg(path); + network_predict(net, sized.data); + + int nboxes = 0; + detection *dets = get_network_boxes(net, orig.w, orig.h, thresh, 0, 0, 1, &nboxes); + if (nms) do_nms_obj(dets, side*side*l.n, 1, nms); + + char labelpath[4096]; + find_replace(path, "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + + int num_labels = 0; + box_label *truth = read_boxes(labelpath, &num_labels); + for(k = 0; k < side*side*l.n; ++k){ + if(dets[k].objectness > thresh){ + ++proposals; + } + } + for (j = 0; j < num_labels; ++j) { + ++total; + box t = {truth[j].x, truth[j].y, truth[j].w, truth[j].h}; + float best_iou = 0; + for(k = 0; k < side*side*l.n; ++k){ + float iou = box_iou(dets[k].bbox, t); + if(dets[k].objectness > thresh && iou > best_iou){ + best_iou = iou; + } + } + avg_iou += best_iou; + if(best_iou > iou_thresh){ + ++correct; + } + } + + fprintf(stderr, "%5d %5d %5d\tRPs/Img: %.2f\tIOU: %.2f%%\tRecall:%.2f%%\n", i, correct, total, (float)proposals/(i+1), avg_iou*100/total, 100.*correct/total); + free_detections(dets, nboxes); + free(id); + free_image(orig); + free_image(sized); + } +} + +void test_yolo(char *cfgfile, char *weightfile, char *filename, float thresh) +{ + image **alphabet = load_alphabet(); + network *net = load_network(cfgfile, weightfile, 0); + layer l = net->layers[net->n-1]; + set_batch_network(net, 1); + srand(2222222); + clock_t time; + char buff[256]; + char *input = buff; + float nms=.4; + while(1){ + if(filename){ + strncpy(input, filename, 256); + } else { + printf("Enter Image Path: "); + fflush(stdout); + input = fgets(input, 256, stdin); + if(!input) return; + strtok(input, "\n"); + } + image im = load_image_color(input,0,0); + image sized = resize_image(im, net->w, net->h); + float *X = sized.data; + time=clock(); + network_predict(net, X); + printf("%s: Predicted in %f seconds.\n", input, sec(clock()-time)); + + int nboxes = 0; + detection *dets = get_network_boxes(net, 1, 1, thresh, 0, 0, 0, &nboxes); + if (nms) do_nms_sort(dets, l.side*l.side*l.n, l.classes, nms); + + draw_detections(im, dets, l.side*l.side*l.n, thresh, voc_names, alphabet, 20); + save_image(im, "predictions"); + show_image(im, "predictions", 0); + free_detections(dets, nboxes); + free_image(im); + free_image(sized); + if (filename) break; + } +} + +void run_yolo(int argc, char **argv) +{ + char *prefix = find_char_arg(argc, argv, "-prefix", 0); + float thresh = find_float_arg(argc, argv, "-thresh", .2); + int cam_index = find_int_arg(argc, argv, "-c", 0); + int frame_skip = find_int_arg(argc, argv, "-s", 0); + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + int avg = find_int_arg(argc, argv, "-avg", 1); + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + char *filename = (argc > 5) ? argv[5]: 0; + if(0==strcmp(argv[2], "test")) test_yolo(cfg, weights, filename, thresh); + else if(0==strcmp(argv[2], "train")) train_yolo(cfg, weights); + else if(0==strcmp(argv[2], "valid")) validate_yolo(cfg, weights); + else if(0==strcmp(argv[2], "recall")) validate_yolo_recall(cfg, weights); + else if(0==strcmp(argv[2], "demo")) demo(cfg, weights, thresh, cam_index, filename, voc_names, 20, frame_skip, prefix, avg, .5, 0,0,0,0); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/include/darknet.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/include/darknet.h" new file mode 100644 index 00000000..4390c619 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/include/darknet.h" @@ -0,0 +1,805 @@ +#ifndef DARKNET_API +#define DARKNET_API +#include +#include +#include +#include + +#ifdef GPU + #define BLOCK 512 + + #include "cuda_runtime.h" + #include "curand.h" + #include "cublas_v2.h" + + #ifdef CUDNN + #include "cudnn.h" + #endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define SECRET_NUM -1234 +extern int gpu_index; + +typedef struct{ + int classes; + char **names; +} metadata; + +metadata get_metadata(char *file); + +typedef struct{ + int *leaf; + int n; + int *parent; + int *child; + int *group; + char **name; + + int groups; + int *group_size; + int *group_offset; +} tree; +tree *read_tree(char *filename); + +typedef enum{ + LOGISTIC, RELU, RELIE, LINEAR, RAMP, TANH, PLSE, LEAKY, ELU, LOGGY, STAIR, HARDTAN, LHTAN, SELU +} ACTIVATION; + +typedef enum{ + PNG, BMP, TGA, JPG +} IMTYPE; + +typedef enum{ + MULT, ADD, SUB, DIV +} BINARY_ACTIVATION; + +typedef enum { + CONVOLUTIONAL, + DECONVOLUTIONAL, + CONNECTED, + MAXPOOL, + SOFTMAX, + DETECTION, + DROPOUT, + CROP, + ROUTE, + COST, + NORMALIZATION, + AVGPOOL, + LOCAL, + SHORTCUT, + ACTIVE, + RNN, + GRU, + LSTM, + CRNN, + BATCHNORM, + NETWORK, + XNOR, + REGION, + YOLO, + ISEG, + REORG, + UPSAMPLE, + LOGXENT, + L2NORM, + BLANK +} LAYER_TYPE; + +typedef enum{ + SSE, MASKED, L1, SEG, SMOOTH,WGAN +} COST_TYPE; + +typedef struct{ + int batch; + float learning_rate; + float momentum; + float decay; + int adam; + float B1; + float B2; + float eps; + int t; +} update_args; + +struct network; +typedef struct network network; + +struct layer; +typedef struct layer layer; + +struct layer{ + LAYER_TYPE type; + ACTIVATION activation; + COST_TYPE cost_type; + void (*forward) (struct layer, struct network); + void (*backward) (struct layer, struct network); + void (*update) (struct layer, update_args); + void (*forward_gpu) (struct layer, struct network); + void (*backward_gpu) (struct layer, struct network); + void (*update_gpu) (struct layer, update_args); + int batch_normalize; + int shortcut; + int batch; + int forced; + int flipped; + int inputs; + int outputs; + int nweights; + int nbiases; + int extra; + int truths; + int h,w,c; + int out_h, out_w, out_c; + int n; + int max_boxes; + int groups; + int size; + int side; + int stride; + int reverse; + int flatten; + int spatial; + int pad; + int sqrt; + int flip; + int index; + int binary; + int xnor; + int steps; + int hidden; + int truth; + float smooth; + float dot; + float angle; + float jitter; + float saturation; + float exposure; + float shift; + float ratio; + float learning_rate_scale; + float clip; + int noloss; + int softmax; + int classes; + int coords; + int background; + int rescore; + int objectness; + int joint; + int noadjust; + int reorg; + int log; + int tanh; + int *mask; + int total; + + float alpha; + float beta; + float kappa; + + float coord_scale; + float object_scale; + float noobject_scale; + float mask_scale; + float class_scale; + int bias_match; + int random; + float ignore_thresh; + float truth_thresh; + float thresh; + float focus; + int classfix; + int absolute; + + int onlyforward; + int stopbackward; + int dontload; + int dontsave; + int dontloadscales; + int numload; + + float temperature; + float probability; + float scale; + + char * cweights; + int * indexes; + int * input_layers; + int * input_sizes; + int * map; + int * counts; + float ** sums; + float * rand; + float * cost; + float * state; + float * prev_state; + float * forgot_state; + float * forgot_delta; + float * state_delta; + float * combine_cpu; + float * combine_delta_cpu; + + float * concat; + float * concat_delta; + + float * binary_weights; + + float * biases; + float * bias_updates; + + float * scales; + float * scale_updates; + + float * weights; + float * weight_updates; + + float * delta; + float * output; + float * loss; + float * squared; + float * norms; + + float * spatial_mean; + float * mean; + float * variance; + + float * mean_delta; + float * variance_delta; + + float * rolling_mean; + float * rolling_variance; + + float * x; + float * x_norm; + + float * m; + float * v; + + float * bias_m; + float * bias_v; + float * scale_m; + float * scale_v; + + + float *z_cpu; + float *r_cpu; + float *h_cpu; + float * prev_state_cpu; + + float *temp_cpu; + float *temp2_cpu; + float *temp3_cpu; + + float *dh_cpu; + float *hh_cpu; + float *prev_cell_cpu; + float *cell_cpu; + float *f_cpu; + float *i_cpu; + float *g_cpu; + float *o_cpu; + float *c_cpu; + float *dc_cpu; + + float * binary_input; + + struct layer *input_layer; + struct layer *self_layer; + struct layer *output_layer; + + struct layer *reset_layer; + struct layer *update_layer; + struct layer *state_layer; + + struct layer *input_gate_layer; + struct layer *state_gate_layer; + struct layer *input_save_layer; + struct layer *state_save_layer; + struct layer *input_state_layer; + struct layer *state_state_layer; + + struct layer *input_z_layer; + struct layer *state_z_layer; + + struct layer *input_r_layer; + struct layer *state_r_layer; + + struct layer *input_h_layer; + struct layer *state_h_layer; + + struct layer *wz; + struct layer *uz; + struct layer *wr; + struct layer *ur; + struct layer *wh; + struct layer *uh; + struct layer *uo; + struct layer *wo; + struct layer *uf; + struct layer *wf; + struct layer *ui; + struct layer *wi; + struct layer *ug; + struct layer *wg; + + tree *softmax_tree; + + size_t workspace_size; + +#ifdef GPU + int *indexes_gpu; + + float *z_gpu; + float *r_gpu; + float *h_gpu; + + float *temp_gpu; + float *temp2_gpu; + float *temp3_gpu; + + float *dh_gpu; + float *hh_gpu; + float *prev_cell_gpu; + float *cell_gpu; + float *f_gpu; + float *i_gpu; + float *g_gpu; + float *o_gpu; + float *c_gpu; + float *dc_gpu; + + float *m_gpu; + float *v_gpu; + float *bias_m_gpu; + float *scale_m_gpu; + float *bias_v_gpu; + float *scale_v_gpu; + + float * combine_gpu; + float * combine_delta_gpu; + + float * prev_state_gpu; + float * forgot_state_gpu; + float * forgot_delta_gpu; + float * state_gpu; + float * state_delta_gpu; + float * gate_gpu; + float * gate_delta_gpu; + float * save_gpu; + float * save_delta_gpu; + float * concat_gpu; + float * concat_delta_gpu; + + float * binary_input_gpu; + float * binary_weights_gpu; + + float * mean_gpu; + float * variance_gpu; + + float * rolling_mean_gpu; + float * rolling_variance_gpu; + + float * variance_delta_gpu; + float * mean_delta_gpu; + + float * x_gpu; + float * x_norm_gpu; + float * weights_gpu; + float * weight_updates_gpu; + float * weight_change_gpu; + + float * biases_gpu; + float * bias_updates_gpu; + float * bias_change_gpu; + + float * scales_gpu; + float * scale_updates_gpu; + float * scale_change_gpu; + + float * output_gpu; + float * loss_gpu; + float * delta_gpu; + float * rand_gpu; + float * squared_gpu; + float * norms_gpu; +#ifdef CUDNN + cudnnTensorDescriptor_t srcTensorDesc, dstTensorDesc; + cudnnTensorDescriptor_t dsrcTensorDesc, ddstTensorDesc; + cudnnTensorDescriptor_t normTensorDesc; + cudnnFilterDescriptor_t weightDesc; + cudnnFilterDescriptor_t dweightDesc; + cudnnConvolutionDescriptor_t convDesc; + cudnnConvolutionFwdAlgo_t fw_algo; + cudnnConvolutionBwdDataAlgo_t bd_algo; + cudnnConvolutionBwdFilterAlgo_t bf_algo; +#endif +#endif +}; + +void free_layer(layer); + +typedef enum { + CONSTANT, STEP, EXP, POLY, STEPS, SIG, RANDOM +} learning_rate_policy; + +typedef struct network{ + int n; + int batch; + size_t *seen; + int *t; + float epoch; + int subdivisions; + layer *layers; + float *output; + learning_rate_policy policy; + + float learning_rate; + float momentum; + float decay; + float gamma; + float scale; + float power; + int time_steps; + int step; + int max_batches; + float *scales; + int *steps; + int num_steps; + int burn_in; + + int adam; + float B1; + float B2; + float eps; + + int inputs; + int outputs; + int truths; + int notruth; + int h, w, c; + int max_crop; + int min_crop; + float max_ratio; + float min_ratio; + int center; + float angle; + float aspect; + float exposure; + float saturation; + float hue; + int random; + + int gpu_index; + tree *hierarchy; + + float *input; + float *truth; + float *delta; + float *workspace; + int train; + int index; + float *cost; + float clip; + +#ifdef GPU + float *input_gpu; + float *truth_gpu; + float *delta_gpu; + float *output_gpu; +#endif + +} network; + +typedef struct { + int w; + int h; + float scale; + float rad; + float dx; + float dy; + float aspect; +} augment_args; + +typedef struct { + int w; + int h; + int c; + float *data; +} image; + +typedef struct{ + float x, y, w, h; +} box; + +typedef struct detection{ + box bbox; + int classes; + float *prob; + float *mask; + float objectness; + int sort_class; +} detection; + +typedef struct matrix{ + int rows, cols; + float **vals; +} matrix; + + +typedef struct{ + int w, h; + matrix X; + matrix y; + int shallow; + int *num_boxes; + box **boxes; +} data; + +typedef enum { + CLASSIFICATION_DATA, DETECTION_DATA, CAPTCHA_DATA, REGION_DATA, IMAGE_DATA, COMPARE_DATA, WRITING_DATA, SWAG_DATA, TAG_DATA, OLD_CLASSIFICATION_DATA, STUDY_DATA, DET_DATA, SUPER_DATA, LETTERBOX_DATA, REGRESSION_DATA, SEGMENTATION_DATA, INSTANCE_DATA, ISEG_DATA +} data_type; + +typedef struct load_args{ + int threads; + char **paths; + char *path; + int n; + int m; + char **labels; + int h; + int w; + int out_w; + int out_h; + int nh; + int nw; + int num_boxes; + int min, max, size; + int classes; + int background; + int scale; + int center; + int coords; + float jitter; + float angle; + float aspect; + float saturation; + float exposure; + float hue; + data *d; + image *im; + image *resized; + data_type type; + tree *hierarchy; +} load_args; + +typedef struct{ + int id; + float x,y,w,h; + float left, right, top, bottom; +} box_label; + + +network *load_network(char *cfg, char *weights, int clear); +load_args get_base_args(network *net); + +void free_data(data d); + +typedef struct node{ + void *val; + struct node *next; + struct node *prev; +} node; + +typedef struct list{ + int size; + node *front; + node *back; +} list; + +pthread_t load_data(load_args args); +list *read_data_cfg(char *filename); +list *read_cfg(char *filename); +unsigned char *read_file(char *filename); +data resize_data(data orig, int w, int h); +data *tile_data(data orig, int divs, int size); +data select_data(data *orig, int *inds); + +void forward_network(network *net); +void backward_network(network *net); +void update_network(network *net); + + +float dot_cpu(int N, float *X, int INCX, float *Y, int INCY); +void axpy_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY); +void copy_cpu(int N, float *X, int INCX, float *Y, int INCY); +void scal_cpu(int N, float ALPHA, float *X, int INCX); +void fill_cpu(int N, float ALPHA, float * X, int INCX); +void normalize_cpu(float *x, float *mean, float *variance, int batch, int filters, int spatial); +void softmax(float *input, int n, float temp, int stride, float *output); + +int best_3d_shift_r(image a, image b, int min, int max); +#ifdef GPU +void axpy_gpu(int N, float ALPHA, float * X, int INCX, float * Y, int INCY); +void fill_gpu(int N, float ALPHA, float * X, int INCX); +void scal_gpu(int N, float ALPHA, float * X, int INCX); +void copy_gpu(int N, float * X, int INCX, float * Y, int INCY); + +void cuda_set_device(int n); +void cuda_free(float *x_gpu); +float *cuda_make_array(float *x, size_t n); +void cuda_pull_array(float *x_gpu, float *x, size_t n); +float cuda_mag_array(float *x_gpu, size_t n); +void cuda_push_array(float *x_gpu, float *x, size_t n); + +void forward_network_gpu(network *net); +void backward_network_gpu(network *net); +void update_network_gpu(network *net); + +float train_networks(network **nets, int n, data d, int interval); +void sync_nets(network **nets, int n, int interval); +void harmless_update_network_gpu(network *net); +#endif +image get_label(image **characters, char *string, int size); +void draw_label(image a, int r, int c, image label, const float *rgb); +void save_image(image im, const char *name); +void save_image_options(image im, const char *name, IMTYPE f, int quality); +void get_next_batch(data d, int n, int offset, float *X, float *y); +void grayscale_image_3c(image im); +void normalize_image(image p); +void matrix_to_csv(matrix m); +float train_network_sgd(network *net, data d, int n); +void rgbgr_image(image im); +data copy_data(data d); +data concat_data(data d1, data d2); +data load_cifar10_data(char *filename); +float matrix_topk_accuracy(matrix truth, matrix guess, int k); +void matrix_add_matrix(matrix from, matrix to); +void scale_matrix(matrix m, float scale); +matrix csv_to_matrix(char *filename); +float *network_accuracies(network *net, data d, int n); +float train_network_datum(network *net); +image make_random_image(int w, int h, int c); + +void denormalize_connected_layer(layer l); +void denormalize_convolutional_layer(layer l); +void statistics_connected_layer(layer l); +void rescale_weights(layer l, float scale, float trans); +void rgbgr_weights(layer l); +image *get_weights(layer l); + +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int frame_skip, char *prefix, int avg, float hier_thresh, int w, int h, int fps, int fullscreen); +void get_detection_detections(layer l, int w, int h, float thresh, detection *dets); + +char *option_find_str(list *l, char *key, char *def); +int option_find_int(list *l, char *key, int def); +int option_find_int_quiet(list *l, char *key, int def); + +network *parse_network_cfg(char *filename); +void save_weights(network *net, char *filename); +void load_weights(network *net, char *filename); +void save_weights_upto(network *net, char *filename, int cutoff); +void load_weights_upto(network *net, char *filename, int start, int cutoff); + +void zero_objectness(layer l); +void get_region_detections(layer l, int w, int h, int netw, int neth, float thresh, int *map, float tree_thresh, int relative, detection *dets); +int get_yolo_detections(layer l, int w, int h, int netw, int neth, float thresh, int *map, int relative, detection *dets); +void free_network(network *net); +void set_batch_network(network *net, int b); +void set_temp_network(network *net, float t); +image load_image(char *filename, int w, int h, int c); +image load_image_color(char *filename, int w, int h); +image make_image(int w, int h, int c); +image resize_image(image im, int w, int h); +void censor_image(image im, int dx, int dy, int w, int h); +image letterbox_image(image im, int w, int h); +image crop_image(image im, int dx, int dy, int w, int h); +image center_crop_image(image im, int w, int h); +image resize_min(image im, int min); +image resize_max(image im, int max); +image threshold_image(image im, float thresh); +image mask_to_rgb(image mask); +int resize_network(network *net, int w, int h); +void free_matrix(matrix m); +void test_resize(char *filename); +int show_image(image p, const char *name, int ms); +image copy_image(image p); +void draw_box_width(image a, int x1, int y1, int x2, int y2, int w, float r, float g, float b); +float get_current_rate(network *net); +void composite_3d(char *f1, char *f2, char *out, int delta); +data load_data_old(char **paths, int n, int m, char **labels, int k, int w, int h); +size_t get_current_batch(network *net); +void constrain_image(image im); +image get_network_image_layer(network *net, int i); +layer get_network_output_layer(network *net); +void top_predictions(network *net, int n, int *index); +void flip_image(image a); +image float_to_image(int w, int h, int c, float *data); +void ghost_image(image source, image dest, int dx, int dy); +float network_accuracy(network *net, data d); +void random_distort_image(image im, float hue, float saturation, float exposure); +void fill_image(image m, float s); +image grayscale_image(image im); +void rotate_image_cw(image im, int times); +double what_time_is_it_now(); +image rotate_image(image m, float rad); +void visualize_network(network *net); +float box_iou(box a, box b); +data load_all_cifar10(); +box_label *read_boxes(char *filename, int *n); +box float_to_box(float *f, int stride); +void draw_detections(image im, detection *dets, int num, float thresh, char **names, image **alphabet, int classes); + +matrix network_predict_data(network *net, data test); +image **load_alphabet(); +image get_network_image(network *net); +float *network_predict(network *net, float *input); + +int network_width(network *net); +int network_height(network *net); +float *network_predict_image(network *net, image im); +void network_detect(network *net, image im, float thresh, float hier_thresh, float nms, detection *dets); +detection *get_network_boxes(network *net, int w, int h, float thresh, float hier, int *map, int relative, int *num); +void free_detections(detection *dets, int n); + +void reset_network_state(network *net, int b); + +char **get_labels(char *filename); +void do_nms_obj(detection *dets, int total, int classes, float thresh); +void do_nms_sort(detection *dets, int total, int classes, float thresh); + +matrix make_matrix(int rows, int cols); + +#ifdef OPENCV +void *open_video_stream(const char *f, int c, int w, int h, int fps); +image get_image_from_stream(void *p); +void make_window(char *name, int w, int h, int fullscreen); +#endif + +void free_image(image m); +float train_network(network *net, data d); +pthread_t load_data_in_thread(load_args args); +void load_data_blocking(load_args args); +list *get_paths(char *filename); +void hierarchy_predictions(float *predictions, int n, tree *hier, int only_leaves, int stride); +void change_leaves(tree *t, char *leaf_list); + +int find_int_arg(int argc, char **argv, char *arg, int def); +float find_float_arg(int argc, char **argv, char *arg, float def); +int find_arg(int argc, char* argv[], char *arg); +char *find_char_arg(int argc, char **argv, char *arg, char *def); +char *basecfg(char *cfgfile); +void find_replace(char *str, char *orig, char *rep, char *output); +void free_ptrs(void **ptrs, int n); +char *fgetl(FILE *fp); +void strip(char *s); +float sec(clock_t clocks); +void **list_to_array(list *l); +void top_k(float *a, int n, int k, int *index); +int *read_map(char *filename); +void error(const char *s); +int max_index(float *a, int n); +int max_int_index(int *a, int n); +int sample_array(float *a, int n); +int *random_index_order(int min, int max); +void free_list(list *l); +float mse_array(float *a, int n); +float variance_array(float *a, int n); +float mag_array(float *a, int n); +void scale_array(float *a, int n, float s); +float mean_array(float *a, int n); +float sum_array(float *a, int n); +void normalize_array(float *a, int n); +int *read_intlist(char *s, int *n, int d); +size_t rand_size_t(); +float rand_normal(); +float rand_uniform(float min, float max); + +#ifdef __cplusplus +} +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-obj.names" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-obj.names" new file mode 100644 index 00000000..ff9bc6d8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-obj.names" @@ -0,0 +1,2 @@ +cat +dog diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-test.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-test.txt" new file mode 100644 index 00000000..5ac00af3 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-test.txt" @@ -0,0 +1,131 @@ +Images/full_catAndDog//23106.jpg +Images/full_catAndDog//37651.jpg +Images/full_catAndDog//26313.jpg +Images/full_catAndDog//31963.jpg +Images/full_catAndDog//23364.jpg +Images/full_catAndDog//24163.jpg +Images/full_catAndDog//25801.jpg +Images/full_catAndDog//23307.jpg +Images/full_catAndDog//26071.jpg +Images/full_catAndDog//25295.jpg +Images/full_catAndDog//19769.jpg +Images/full_catAndDog//22029.jpg +Images/full_catAndDog//21136.jpg +Images/full_catAndDog//21707.jpg +Images/full_catAndDog//27292.jpg +Images/full_catAndDog//30255.jpg +Images/full_catAndDog//27376.jpg +Images/full_catAndDog//32418.jpg +Images/full_catAndDog//32316.jpg +Images/full_catAndDog//33141.jpg +Images/full_catAndDog//31333.jpg +Images/full_catAndDog//24897.jpg +Images/full_catAndDog//23324.jpg +Images/full_catAndDog//19862.jpg +Images/full_catAndDog//35661.jpg +Images/full_catAndDog//35349.jpg +Images/full_catAndDog//20962.jpg +Images/full_catAndDog//21222.jpg +Images/full_catAndDog//20124.jpg +Images/full_catAndDog//19842.jpg +Images/full_catAndDog//32880.jpg +Images/full_catAndDog//32396.jpg +Images/full_catAndDog//36558.jpg +Images/full_catAndDog//22709.jpg +Images/full_catAndDog//22538.jpg +Images/full_catAndDog//22939.jpg +Images/full_catAndDog//40214.jpg +Images/full_catAndDog//20332.jpg +Images/full_catAndDog//27989.jpg +Images/full_catAndDog//36547.jpg +Images/full_catAndDog/new2120904.jpg +Images/full_catAndDog/new5233483.jpg +Images/full_catAndDog/new9532357.jpg +Images/full_catAndDog/new15833824.jpg +Images/full_catAndDog/new16132292.jpg +Images/full_catAndDog/new18820204.jpg +Images/full_catAndDog/new19524910.jpg +Images/full_catAndDog/new22825873.jpg +Images/full_catAndDog/new25128362.jpg +Images/full_catAndDog/new25428362.jpg +Images/full_catAndDog/new29236703.jpg +Images/full_catAndDog/new33723301.jpg +Images/full_catAndDog/new37926978.jpg +Images/full_catAndDog/new39537408.jpg +Images/full_catAndDog/new41119107.jpg +Images/full_catAndDog/new41835519.jpg +Images/full_catAndDog/new46731846.jpg +Images/full_catAndDog/new48921197.jpg +Images/full_catAndDog/new49135281.jpg +Images/full_catAndDog/new54719769.jpg +Images/full_catAndDog/new56723997.jpg +Images/full_catAndDog/new57829875.jpg +Images/full_catAndDog/new60834107.jpg +Images/full_catAndDog/new61433951.jpg +Images/full_catAndDog/new62431638.jpg +Images/full_catAndDog/new62531638.jpg +Images/full_catAndDog/new67232755.jpg +Images/full_catAndDog/new69429471.jpg +Images/full_catAndDog/new71028664.jpg +Images/full_catAndDog/new71335646.jpg +Images/full_catAndDog/new73819904.jpg +Images/full_catAndDog/new85820503.jpg +Images/full_catAndDog/new87635789.jpg +Images/full_catAndDog/new89521305.jpg +Images/full_catAndDog/new93531418.jpg +Images/full_catAndDog/new94328987.jpg +Images/full_catAndDog/new96619799.jpg +Images/full_catAndDog/new100327482.jpg +Images/full_catAndDog/new100633475.jpg +Images/full_catAndDog/new105940428.jpg +Images/full_catAndDog/new106929749.jpg +Images/full_catAndDog/new109025784.jpg +Images/full_catAndDog/new109435588.jpg +Images/full_catAndDog/new109535588.jpg +Images/full_catAndDog/new110422634.jpg +Images/full_catAndDog/new113625881.jpg +Images/full_catAndDog/new115135323.jpg +Images/full_catAndDog/new117040093.jpg +Images/full_catAndDog/new120828679.jpg +Images/full_catAndDog/new121637301.jpg +Images/full_catAndDog/new123234627.jpg +Images/full_catAndDog/new124227045.jpg +Images/full_catAndDog/new124735661.jpg +Images/full_catAndDog/new125324116.jpg +Images/full_catAndDog/new133325475.jpg +Images/full_catAndDog/new135020962.jpg +Images/full_catAndDog/new141627042.jpg +Images/full_catAndDog/new142727945.jpg +Images/full_catAndDog/new143027945.jpg +Images/full_catAndDog/new144920124.jpg +Images/full_catAndDog/new149321160.jpg +Images/full_catAndDog/new152033214.jpg +Images/full_catAndDog/new154338466.jpg +Images/full_catAndDog/new154632880.jpg +Images/full_catAndDog/new158027289.jpg +Images/full_catAndDog/new167034062.jpg +Images/full_catAndDog/new168829768.jpg +Images/full_catAndDog/new172739525.jpg +Images/full_catAndDog/new173328036.jpg +Images/full_catAndDog/new175619496.jpg +Images/full_catAndDog/new177429256.jpg +Images/full_catAndDog/new178125898.jpg +Images/full_catAndDog/new179519653.jpg +Images/full_catAndDog/new181232140.jpg +Images/full_catAndDog/new183221762.jpg +Images/full_catAndDog/new183839962.jpg +Images/full_catAndDog/new184235792.jpg +Images/full_catAndDog/new184740214.jpg +Images/full_catAndDog/new191426662.jpg +Images/full_catAndDog/new192626847.jpg +Images/full_catAndDog/new193431469.jpg +Images/full_catAndDog/new193531469.jpg +Images/full_catAndDog/new193828402.jpg +Images/full_catAndDog/new194427915.jpg +Images/full_catAndDog/new194727989.jpg +Images/full_catAndDog/new195826589.jpg +Images/full_catAndDog/new198032194.jpg +Images/full_catAndDog/new198126770.jpg +Images/full_catAndDog/new198920552.jpg +Images/full_catAndDog/new199020552.jpg +Images/full_catAndDog/new199239011.jpg diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-train.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-train.txt" new file mode 100644 index 00000000..4d1dec95 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/order/cat-dog-train.txt" @@ -0,0 +1,2275 @@ +Images/full_catAndDog//24804.jpg +Images/full_catAndDog//37987.jpg +Images/full_catAndDog//33678.jpg +Images/full_catAndDog//38375.jpg +Images/full_catAndDog//20904.jpg +Images/full_catAndDog//36409.jpg +Images/full_catAndDog//30849.jpg +Images/full_catAndDog//39007.jpg +Images/full_catAndDog//39873.jpg +Images/full_catAndDog//33483.jpg +Images/full_catAndDog//29422.jpg +Images/full_catAndDog//28472.jpg +Images/full_catAndDog//26981.jpg +Images/full_catAndDog//32659.jpg +Images/full_catAndDog//38206.jpg +Images/full_catAndDog//33692.jpg +Images/full_catAndDog//24670.jpg +Images/full_catAndDog//32357.jpg +Images/full_catAndDog//23254.jpg +Images/full_catAndDog//36756.jpg +Images/full_catAndDog//34512.jpg +Images/full_catAndDog//39861.jpg +Images/full_catAndDog//33831.jpg +Images/full_catAndDog//25035.jpg +Images/full_catAndDog//21774.jpg +Images/full_catAndDog//23578.jpg +Images/full_catAndDog//31201.jpg +Images/full_catAndDog//21528.jpg +Images/full_catAndDog//33824.jpg +Images/full_catAndDog//32292.jpg +Images/full_catAndDog//29751.jpg +Images/full_catAndDog//29910.jpg +Images/full_catAndDog//31411.jpg +Images/full_catAndDog//25683.jpg +Images/full_catAndDog//20204.jpg +Images/full_catAndDog//24910.jpg +Images/full_catAndDog//28385.jpg +Images/full_catAndDog//34674.jpg +Images/full_catAndDog//22067.jpg +Images/full_catAndDog//36414.jpg +Images/full_catAndDog//25980.jpg +Images/full_catAndDog//25873.jpg +Images/full_catAndDog//21702.jpg +Images/full_catAndDog//19359.jpg +Images/full_catAndDog//29590.jpg +Images/full_catAndDog//28362.jpg +Images/full_catAndDog//27601.jpg +Images/full_catAndDog//40699.jpg +Images/full_catAndDog//39676.jpg +Images/full_catAndDog//23616.jpg +Images/full_catAndDog//31590.jpg +Images/full_catAndDog//39232.jpg +Images/full_catAndDog//37070.jpg +Images/full_catAndDog//36703.jpg +Images/full_catAndDog//21777.jpg +Images/full_catAndDog//27113.jpg +Images/full_catAndDog//23535.jpg +Images/full_catAndDog//36941.jpg +Images/full_catAndDog//35179.jpg +Images/full_catAndDog//40232.jpg +Images/full_catAndDog//32918.jpg +Images/full_catAndDog//23301.jpg +Images/full_catAndDog//20638.jpg +Images/full_catAndDog//34757.jpg +Images/full_catAndDog//32315.jpg +Images/full_catAndDog//22612.jpg +Images/full_catAndDog//33448.jpg +Images/full_catAndDog//31519.jpg +Images/full_catAndDog//26978.jpg +Images/full_catAndDog//37882.jpg +Images/full_catAndDog//29413.jpg +Images/full_catAndDog//37408.jpg +Images/full_catAndDog//36720.jpg +Images/full_catAndDog//27887.jpg +Images/full_catAndDog//19107.jpg +Images/full_catAndDog//35519.jpg +Images/full_catAndDog//40009.jpg +Images/full_catAndDog//32974.jpg +Images/full_catAndDog//30023.jpg +Images/full_catAndDog//32169.jpg +Images/full_catAndDog//24784.jpg +Images/full_catAndDog//28262.jpg +Images/full_catAndDog//26043.jpg +Images/full_catAndDog//40785.jpg +Images/full_catAndDog//31846.jpg +Images/full_catAndDog//38899.jpg +Images/full_catAndDog//27957.jpg +Images/full_catAndDog//25826.jpg +Images/full_catAndDog//21197.jpg +Images/full_catAndDog//35281.jpg +Images/full_catAndDog//21201.jpg +Images/full_catAndDog//38450.jpg +Images/full_catAndDog//36525.jpg +Images/full_catAndDog//21284.jpg +Images/full_catAndDog//32381.jpg +Images/full_catAndDog//31823.jpg +Images/full_catAndDog//26899.jpg +Images/full_catAndDog//25813.jpg +Images/full_catAndDog//19920.jpg +Images/full_catAndDog//21187.jpg +Images/full_catAndDog//25127.jpg +Images/full_catAndDog//32267.jpg +Images/full_catAndDog//23997.jpg +Images/full_catAndDog//33582.jpg +Images/full_catAndDog//29875.jpg +Images/full_catAndDog//34860.jpg +Images/full_catAndDog//32342.jpg +Images/full_catAndDog//30790.jpg +Images/full_catAndDog//33264.jpg +Images/full_catAndDog//34107.jpg +Images/full_catAndDog//33951.jpg +Images/full_catAndDog//39757.jpg +Images/full_catAndDog//31638.jpg +Images/full_catAndDog//39012.jpg +Images/full_catAndDog//39996.jpg +Images/full_catAndDog//35869.jpg +Images/full_catAndDog//38896.jpg +Images/full_catAndDog//32509.jpg +Images/full_catAndDog//28143.jpg +Images/full_catAndDog//23800.jpg +Images/full_catAndDog//25839.jpg +Images/full_catAndDog//32755.jpg +Images/full_catAndDog//22227.jpg +Images/full_catAndDog//19750.jpg +Images/full_catAndDog//29793.jpg +Images/full_catAndDog//29471.jpg +Images/full_catAndDog//38312.jpg +Images/full_catAndDog//28664.jpg +Images/full_catAndDog//35646.jpg +Images/full_catAndDog//20804.jpg +Images/full_catAndDog//31688.jpg +Images/full_catAndDog//40603.jpg +Images/full_catAndDog//38143.jpg +Images/full_catAndDog//19904.jpg +Images/full_catAndDog//38349.jpg +Images/full_catAndDog//24633.jpg +Images/full_catAndDog//26829.jpg +Images/full_catAndDog//37652.jpg +Images/full_catAndDog//32929.jpg +Images/full_catAndDog//33071.jpg +Images/full_catAndDog//35416.jpg +Images/full_catAndDog//24449.jpg +Images/full_catAndDog//22327.jpg +Images/full_catAndDog//25957.jpg +Images/full_catAndDog//35124.jpg +Images/full_catAndDog//35644.jpg +Images/full_catAndDog//27937.jpg +Images/full_catAndDog//25775.jpg +Images/full_catAndDog//20937.jpg +Images/full_catAndDog//21922.jpg +Images/full_catAndDog//28222.jpg +Images/full_catAndDog//32894.jpg +Images/full_catAndDog//26150.jpg +Images/full_catAndDog//26005.jpg +Images/full_catAndDog//20503.jpg +Images/full_catAndDog//35632.jpg +Images/full_catAndDog//38221.jpg +Images/full_catAndDog//24027.jpg +Images/full_catAndDog//35789.jpg +Images/full_catAndDog//33783.jpg +Images/full_catAndDog//35755.jpg +Images/full_catAndDog//21305.jpg +Images/full_catAndDog//19536.jpg +Images/full_catAndDog//39907.jpg +Images/full_catAndDog//22482.jpg +Images/full_catAndDog//23949.jpg +Images/full_catAndDog//38052.jpg +Images/full_catAndDog//23308.jpg +Images/full_catAndDog//31418.jpg +Images/full_catAndDog//30281.jpg +Images/full_catAndDog//28987.jpg +Images/full_catAndDog//39278.jpg +Images/full_catAndDog//21580.jpg +Images/full_catAndDog//39413.jpg +Images/full_catAndDog//19799.jpg +Images/full_catAndDog//30956.jpg +Images/full_catAndDog//30998.jpg +Images/full_catAndDog//29968.jpg +Images/full_catAndDog//35798.jpg +Images/full_catAndDog//27427.jpg +Images/full_catAndDog//27482.jpg +Images/full_catAndDog//33475.jpg +Images/full_catAndDog//28604.jpg +Images/full_catAndDog//27148.jpg +Images/full_catAndDog//27358.jpg +Images/full_catAndDog//27475.jpg +Images/full_catAndDog//38452.jpg +Images/full_catAndDog//40670.jpg +Images/full_catAndDog//28590.jpg +Images/full_catAndDog//21435.jpg +Images/full_catAndDog//40428.jpg +Images/full_catAndDog//29252.jpg +Images/full_catAndDog//29749.jpg +Images/full_catAndDog//35036.jpg +Images/full_catAndDog//33500.jpg +Images/full_catAndDog//28887.jpg +Images/full_catAndDog//25784.jpg +Images/full_catAndDog//35588.jpg +Images/full_catAndDog//22634.jpg +Images/full_catAndDog//26308.jpg +Images/full_catAndDog//23899.jpg +Images/full_catAndDog//32344.jpg +Images/full_catAndDog//26398.jpg +Images/full_catAndDog//33997.jpg +Images/full_catAndDog//22288.jpg +Images/full_catAndDog//25881.jpg +Images/full_catAndDog//27233.jpg +Images/full_catAndDog//35323.jpg +Images/full_catAndDog//40522.jpg +Images/full_catAndDog//39848.jpg +Images/full_catAndDog//40093.jpg +Images/full_catAndDog//21137.jpg +Images/full_catAndDog//35196.jpg +Images/full_catAndDog//26783.jpg +Images/full_catAndDog//20220.jpg +Images/full_catAndDog//20811.jpg +Images/full_catAndDog//21157.jpg +Images/full_catAndDog//28679.jpg +Images/full_catAndDog//23799.jpg +Images/full_catAndDog//37301.jpg +Images/full_catAndDog//29428.jpg +Images/full_catAndDog//29831.jpg +Images/full_catAndDog//34627.jpg +Images/full_catAndDog//21632.jpg +Images/full_catAndDog//27045.jpg +Images/full_catAndDog//24116.jpg +Images/full_catAndDog//22331.jpg +Images/full_catAndDog//32223.jpg +Images/full_catAndDog//33813.jpg +Images/full_catAndDog//19608.jpg +Images/full_catAndDog//40225.jpg +Images/full_catAndDog//33411.jpg +Images/full_catAndDog//25187.jpg +Images/full_catAndDog//21186.jpg +Images/full_catAndDog//31412.jpg +Images/full_catAndDog//21946.jpg +Images/full_catAndDog//24678.jpg +Images/full_catAndDog//27622.jpg +Images/full_catAndDog//24469.jpg +Images/full_catAndDog//38923.jpg +Images/full_catAndDog//25475.jpg +Images/full_catAndDog//39348.jpg +Images/full_catAndDog//19327.jpg +Images/full_catAndDog//21345.jpg +Images/full_catAndDog//32723.jpg +Images/full_catAndDog//36644.jpg +Images/full_catAndDog//38127.jpg +Images/full_catAndDog//20086.jpg +Images/full_catAndDog//26897.jpg +Images/full_catAndDog//24210.jpg +Images/full_catAndDog//33348.jpg +Images/full_catAndDog//25060.jpg +Images/full_catAndDog//26546.jpg +Images/full_catAndDog//21279.jpg +Images/full_catAndDog//24686.jpg +Images/full_catAndDog//27042.jpg +Images/full_catAndDog//26362.jpg +Images/full_catAndDog//27945.jpg +Images/full_catAndDog//40205.jpg +Images/full_catAndDog//20038.jpg +Images/full_catAndDog//31886.jpg +Images/full_catAndDog//22836.jpg +Images/full_catAndDog//24712.jpg +Images/full_catAndDog//25119.jpg +Images/full_catAndDog//22149.jpg +Images/full_catAndDog//35431.jpg +Images/full_catAndDog//28605.jpg +Images/full_catAndDog//40431.jpg +Images/full_catAndDog//21415.jpg +Images/full_catAndDog//21160.jpg +Images/full_catAndDog//32337.jpg +Images/full_catAndDog//22953.jpg +Images/full_catAndDog//38268.jpg +Images/full_catAndDog//33214.jpg +Images/full_catAndDog//21353.jpg +Images/full_catAndDog//30568.jpg +Images/full_catAndDog//23011.jpg +Images/full_catAndDog//23204.jpg +Images/full_catAndDog//38466.jpg +Images/full_catAndDog//35856.jpg +Images/full_catAndDog//28815.jpg +Images/full_catAndDog//38613.jpg +Images/full_catAndDog//23509.jpg +Images/full_catAndDog//23996.jpg +Images/full_catAndDog//27289.jpg +Images/full_catAndDog//21208.jpg +Images/full_catAndDog//34994.jpg +Images/full_catAndDog//33426.jpg +Images/full_catAndDog//22916.jpg +Images/full_catAndDog//20406.jpg +Images/full_catAndDog//28059.jpg +Images/full_catAndDog//27424.jpg +Images/full_catAndDog//38076.jpg +Images/full_catAndDog//30206.jpg +Images/full_catAndDog//35064.jpg +Images/full_catAndDog//22591.jpg +Images/full_catAndDog//27380.jpg +Images/full_catAndDog//37715.jpg +Images/full_catAndDog//35083.jpg +Images/full_catAndDog//25738.jpg +Images/full_catAndDog//34062.jpg +Images/full_catAndDog//33683.jpg +Images/full_catAndDog//23880.jpg +Images/full_catAndDog//30737.jpg +Images/full_catAndDog//29768.jpg +Images/full_catAndDog//31751.jpg +Images/full_catAndDog//24520.jpg +Images/full_catAndDog//27341.jpg +Images/full_catAndDog//35088.jpg +Images/full_catAndDog//24117.jpg +Images/full_catAndDog//35910.jpg +Images/full_catAndDog//39525.jpg +Images/full_catAndDog//28036.jpg +Images/full_catAndDog//26315.jpg +Images/full_catAndDog//27492.jpg +Images/full_catAndDog//24585.jpg +Images/full_catAndDog//19496.jpg +Images/full_catAndDog//39813.jpg +Images/full_catAndDog//32455.jpg +Images/full_catAndDog//29256.jpg +Images/full_catAndDog//26905.jpg +Images/full_catAndDog//25898.jpg +Images/full_catAndDog//24351.jpg +Images/full_catAndDog//19653.jpg +Images/full_catAndDog//27139.jpg +Images/full_catAndDog//27179.jpg +Images/full_catAndDog//32140.jpg +Images/full_catAndDog//33788.jpg +Images/full_catAndDog//19308.jpg +Images/full_catAndDog//27720.jpg +Images/full_catAndDog//21762.jpg +Images/full_catAndDog//39962.jpg +Images/full_catAndDog//35792.jpg +Images/full_catAndDog//19666.jpg +Images/full_catAndDog//22805.jpg +Images/full_catAndDog//29178.jpg +Images/full_catAndDog//39450.jpg +Images/full_catAndDog//33106.jpg +Images/full_catAndDog//23417.jpg +Images/full_catAndDog//27527.jpg +Images/full_catAndDog//29698.jpg +Images/full_catAndDog//30596.jpg +Images/full_catAndDog//19900.jpg +Images/full_catAndDog//20800.jpg +Images/full_catAndDog//26662.jpg +Images/full_catAndDog//25224.jpg +Images/full_catAndDog//31597.jpg +Images/full_catAndDog//26847.jpg +Images/full_catAndDog//31469.jpg +Images/full_catAndDog//28402.jpg +Images/full_catAndDog//27915.jpg +Images/full_catAndDog//26497.jpg +Images/full_catAndDog//26589.jpg +Images/full_catAndDog//32590.jpg +Images/full_catAndDog//24812.jpg +Images/full_catAndDog//19616.jpg +Images/full_catAndDog//32194.jpg +Images/full_catAndDog//26770.jpg +Images/full_catAndDog//20552.jpg +Images/full_catAndDog//39011.jpg +Images/full_catAndDog//22326.jpg +Images/full_catAndDog/new124804.jpg +Images/full_catAndDog/new224804.jpg +Images/full_catAndDog/new324804.jpg +Images/full_catAndDog/new424804.jpg +Images/full_catAndDog/new524804.jpg +Images/full_catAndDog/new637987.jpg +Images/full_catAndDog/new737987.jpg +Images/full_catAndDog/new837987.jpg +Images/full_catAndDog/new937987.jpg +Images/full_catAndDog/new1037987.jpg +Images/full_catAndDog/new1133678.jpg +Images/full_catAndDog/new1233678.jpg +Images/full_catAndDog/new1333678.jpg +Images/full_catAndDog/new1433678.jpg +Images/full_catAndDog/new1533678.jpg +Images/full_catAndDog/new1638375.jpg +Images/full_catAndDog/new1738375.jpg +Images/full_catAndDog/new1838375.jpg +Images/full_catAndDog/new1938375.jpg +Images/full_catAndDog/new2038375.jpg +Images/full_catAndDog/new2220904.jpg +Images/full_catAndDog/new2320904.jpg +Images/full_catAndDog/new2420904.jpg +Images/full_catAndDog/new2520904.jpg +Images/full_catAndDog/new2636409.jpg +Images/full_catAndDog/new2736409.jpg +Images/full_catAndDog/new2836409.jpg +Images/full_catAndDog/new2936409.jpg +Images/full_catAndDog/new3036409.jpg +Images/full_catAndDog/new3130849.jpg +Images/full_catAndDog/new3230849.jpg +Images/full_catAndDog/new3330849.jpg +Images/full_catAndDog/new3430849.jpg +Images/full_catAndDog/new3530849.jpg +Images/full_catAndDog/new3639007.jpg +Images/full_catAndDog/new3739007.jpg +Images/full_catAndDog/new3839007.jpg +Images/full_catAndDog/new3939007.jpg +Images/full_catAndDog/new4039007.jpg +Images/full_catAndDog/new4139873.jpg +Images/full_catAndDog/new4239873.jpg +Images/full_catAndDog/new4339873.jpg +Images/full_catAndDog/new4439873.jpg +Images/full_catAndDog/new4539873.jpg +Images/full_catAndDog/new4623106.jpg +Images/full_catAndDog/new4723106.jpg +Images/full_catAndDog/new4823106.jpg +Images/full_catAndDog/new4923106.jpg +Images/full_catAndDog/new5023106.jpg +Images/full_catAndDog/new5133483.jpg +Images/full_catAndDog/new5333483.jpg +Images/full_catAndDog/new5433483.jpg +Images/full_catAndDog/new5533483.jpg +Images/full_catAndDog/new5629422.jpg +Images/full_catAndDog/new5729422.jpg +Images/full_catAndDog/new5829422.jpg +Images/full_catAndDog/new5929422.jpg +Images/full_catAndDog/new6029422.jpg +Images/full_catAndDog/new6128472.jpg +Images/full_catAndDog/new6228472.jpg +Images/full_catAndDog/new6328472.jpg +Images/full_catAndDog/new6428472.jpg +Images/full_catAndDog/new6528472.jpg +Images/full_catAndDog/new6626981.jpg +Images/full_catAndDog/new6726981.jpg +Images/full_catAndDog/new6826981.jpg +Images/full_catAndDog/new6926981.jpg +Images/full_catAndDog/new7026981.jpg +Images/full_catAndDog/new7132659.jpg +Images/full_catAndDog/new7232659.jpg +Images/full_catAndDog/new7332659.jpg +Images/full_catAndDog/new7432659.jpg +Images/full_catAndDog/new7532659.jpg +Images/full_catAndDog/new7638206.jpg +Images/full_catAndDog/new7738206.jpg +Images/full_catAndDog/new7838206.jpg +Images/full_catAndDog/new7938206.jpg +Images/full_catAndDog/new8038206.jpg +Images/full_catAndDog/new8133692.jpg +Images/full_catAndDog/new8233692.jpg +Images/full_catAndDog/new8333692.jpg +Images/full_catAndDog/new8433692.jpg +Images/full_catAndDog/new8533692.jpg +Images/full_catAndDog/new8624670.jpg +Images/full_catAndDog/new8724670.jpg +Images/full_catAndDog/new8824670.jpg +Images/full_catAndDog/new8924670.jpg +Images/full_catAndDog/new9024670.jpg +Images/full_catAndDog/new9132357.jpg +Images/full_catAndDog/new9232357.jpg +Images/full_catAndDog/new9332357.jpg +Images/full_catAndDog/new9432357.jpg +Images/full_catAndDog/new9637651.jpg +Images/full_catAndDog/new9737651.jpg +Images/full_catAndDog/new9837651.jpg +Images/full_catAndDog/new9937651.jpg +Images/full_catAndDog/new10037651.jpg +Images/full_catAndDog/new10123254.jpg +Images/full_catAndDog/new10223254.jpg +Images/full_catAndDog/new10323254.jpg +Images/full_catAndDog/new10423254.jpg +Images/full_catAndDog/new10523254.jpg +Images/full_catAndDog/new10636756.jpg +Images/full_catAndDog/new10736756.jpg +Images/full_catAndDog/new10836756.jpg +Images/full_catAndDog/new10936756.jpg +Images/full_catAndDog/new11036756.jpg +Images/full_catAndDog/new11134512.jpg +Images/full_catAndDog/new11234512.jpg +Images/full_catAndDog/new11334512.jpg +Images/full_catAndDog/new11434512.jpg +Images/full_catAndDog/new11534512.jpg +Images/full_catAndDog/new11639861.jpg +Images/full_catAndDog/new11739861.jpg +Images/full_catAndDog/new11839861.jpg +Images/full_catAndDog/new11939861.jpg +Images/full_catAndDog/new12039861.jpg +Images/full_catAndDog/new12133831.jpg +Images/full_catAndDog/new12233831.jpg +Images/full_catAndDog/new12333831.jpg +Images/full_catAndDog/new12433831.jpg +Images/full_catAndDog/new12533831.jpg +Images/full_catAndDog/new12625035.jpg +Images/full_catAndDog/new12725035.jpg +Images/full_catAndDog/new12825035.jpg +Images/full_catAndDog/new12925035.jpg +Images/full_catAndDog/new13025035.jpg +Images/full_catAndDog/new13121774.jpg +Images/full_catAndDog/new13221774.jpg +Images/full_catAndDog/new13321774.jpg +Images/full_catAndDog/new13421774.jpg +Images/full_catAndDog/new13521774.jpg +Images/full_catAndDog/new13623578.jpg +Images/full_catAndDog/new13723578.jpg +Images/full_catAndDog/new13823578.jpg +Images/full_catAndDog/new13923578.jpg +Images/full_catAndDog/new14023578.jpg +Images/full_catAndDog/new14131201.jpg +Images/full_catAndDog/new14231201.jpg +Images/full_catAndDog/new14331201.jpg +Images/full_catAndDog/new14431201.jpg +Images/full_catAndDog/new14531201.jpg +Images/full_catAndDog/new14626313.jpg +Images/full_catAndDog/new14726313.jpg +Images/full_catAndDog/new14826313.jpg +Images/full_catAndDog/new14926313.jpg +Images/full_catAndDog/new15026313.jpg +Images/full_catAndDog/new15121528.jpg +Images/full_catAndDog/new15221528.jpg +Images/full_catAndDog/new15321528.jpg +Images/full_catAndDog/new15421528.jpg +Images/full_catAndDog/new15521528.jpg +Images/full_catAndDog/new15633824.jpg +Images/full_catAndDog/new15733824.jpg +Images/full_catAndDog/new15933824.jpg +Images/full_catAndDog/new16033824.jpg +Images/full_catAndDog/new16232292.jpg +Images/full_catAndDog/new16332292.jpg +Images/full_catAndDog/new16432292.jpg +Images/full_catAndDog/new16532292.jpg +Images/full_catAndDog/new16629751.jpg +Images/full_catAndDog/new16729751.jpg +Images/full_catAndDog/new16829751.jpg +Images/full_catAndDog/new16929751.jpg +Images/full_catAndDog/new17029751.jpg +Images/full_catAndDog/new17129910.jpg +Images/full_catAndDog/new17229910.jpg +Images/full_catAndDog/new17329910.jpg +Images/full_catAndDog/new17429910.jpg +Images/full_catAndDog/new17529910.jpg +Images/full_catAndDog/new17631411.jpg +Images/full_catAndDog/new17731411.jpg +Images/full_catAndDog/new17831411.jpg +Images/full_catAndDog/new17931411.jpg +Images/full_catAndDog/new18031411.jpg +Images/full_catAndDog/new18125683.jpg +Images/full_catAndDog/new18225683.jpg +Images/full_catAndDog/new18325683.jpg +Images/full_catAndDog/new18425683.jpg +Images/full_catAndDog/new18525683.jpg +Images/full_catAndDog/new18620204.jpg +Images/full_catAndDog/new18720204.jpg +Images/full_catAndDog/new18920204.jpg +Images/full_catAndDog/new19020204.jpg +Images/full_catAndDog/new19124910.jpg +Images/full_catAndDog/new19224910.jpg +Images/full_catAndDog/new19324910.jpg +Images/full_catAndDog/new19424910.jpg +Images/full_catAndDog/new19631963.jpg +Images/full_catAndDog/new19731963.jpg +Images/full_catAndDog/new19831963.jpg +Images/full_catAndDog/new19931963.jpg +Images/full_catAndDog/new20031963.jpg +Images/full_catAndDog/new20128385.jpg +Images/full_catAndDog/new20228385.jpg +Images/full_catAndDog/new20328385.jpg +Images/full_catAndDog/new20428385.jpg +Images/full_catAndDog/new20528385.jpg +Images/full_catAndDog/new20634674.jpg +Images/full_catAndDog/new20734674.jpg +Images/full_catAndDog/new20834674.jpg +Images/full_catAndDog/new20934674.jpg +Images/full_catAndDog/new21034674.jpg +Images/full_catAndDog/new21122067.jpg +Images/full_catAndDog/new21222067.jpg +Images/full_catAndDog/new21322067.jpg +Images/full_catAndDog/new21422067.jpg +Images/full_catAndDog/new21522067.jpg +Images/full_catAndDog/new21636414.jpg +Images/full_catAndDog/new21736414.jpg +Images/full_catAndDog/new21836414.jpg +Images/full_catAndDog/new21936414.jpg +Images/full_catAndDog/new22036414.jpg +Images/full_catAndDog/new22125980.jpg +Images/full_catAndDog/new22225980.jpg +Images/full_catAndDog/new22325980.jpg +Images/full_catAndDog/new22425980.jpg +Images/full_catAndDog/new22525980.jpg +Images/full_catAndDog/new22625873.jpg +Images/full_catAndDog/new22725873.jpg +Images/full_catAndDog/new22925873.jpg +Images/full_catAndDog/new23025873.jpg +Images/full_catAndDog/new23121702.jpg +Images/full_catAndDog/new23221702.jpg +Images/full_catAndDog/new23321702.jpg +Images/full_catAndDog/new23421702.jpg +Images/full_catAndDog/new23521702.jpg +Images/full_catAndDog/new23619359.jpg +Images/full_catAndDog/new23719359.jpg +Images/full_catAndDog/new23819359.jpg +Images/full_catAndDog/new23919359.jpg +Images/full_catAndDog/new24019359.jpg +Images/full_catAndDog/new24129590.jpg +Images/full_catAndDog/new24229590.jpg +Images/full_catAndDog/new24329590.jpg +Images/full_catAndDog/new24429590.jpg +Images/full_catAndDog/new24529590.jpg +Images/full_catAndDog/new24623364.jpg +Images/full_catAndDog/new24723364.jpg +Images/full_catAndDog/new24823364.jpg +Images/full_catAndDog/new24923364.jpg +Images/full_catAndDog/new25023364.jpg +Images/full_catAndDog/new25228362.jpg +Images/full_catAndDog/new25328362.jpg +Images/full_catAndDog/new25528362.jpg +Images/full_catAndDog/new25627601.jpg +Images/full_catAndDog/new25727601.jpg +Images/full_catAndDog/new25827601.jpg +Images/full_catAndDog/new25927601.jpg +Images/full_catAndDog/new26027601.jpg +Images/full_catAndDog/new26140699.jpg +Images/full_catAndDog/new26240699.jpg +Images/full_catAndDog/new26340699.jpg +Images/full_catAndDog/new26440699.jpg +Images/full_catAndDog/new26540699.jpg +Images/full_catAndDog/new26639676.jpg +Images/full_catAndDog/new26739676.jpg +Images/full_catAndDog/new26839676.jpg +Images/full_catAndDog/new26939676.jpg +Images/full_catAndDog/new27039676.jpg +Images/full_catAndDog/new27123616.jpg +Images/full_catAndDog/new27223616.jpg +Images/full_catAndDog/new27323616.jpg +Images/full_catAndDog/new27423616.jpg +Images/full_catAndDog/new27523616.jpg +Images/full_catAndDog/new27631590.jpg +Images/full_catAndDog/new27731590.jpg +Images/full_catAndDog/new27831590.jpg +Images/full_catAndDog/new27931590.jpg +Images/full_catAndDog/new28031590.jpg +Images/full_catAndDog/new28139232.jpg +Images/full_catAndDog/new28239232.jpg +Images/full_catAndDog/new28339232.jpg +Images/full_catAndDog/new28439232.jpg +Images/full_catAndDog/new28539232.jpg +Images/full_catAndDog/new28637070.jpg +Images/full_catAndDog/new28737070.jpg +Images/full_catAndDog/new28837070.jpg +Images/full_catAndDog/new28937070.jpg +Images/full_catAndDog/new29037070.jpg +Images/full_catAndDog/new29136703.jpg +Images/full_catAndDog/new29336703.jpg +Images/full_catAndDog/new29436703.jpg +Images/full_catAndDog/new29536703.jpg +Images/full_catAndDog/new29624163.jpg +Images/full_catAndDog/new29724163.jpg +Images/full_catAndDog/new29824163.jpg +Images/full_catAndDog/new29924163.jpg +Images/full_catAndDog/new30024163.jpg +Images/full_catAndDog/new30121777.jpg +Images/full_catAndDog/new30221777.jpg +Images/full_catAndDog/new30321777.jpg +Images/full_catAndDog/new30421777.jpg +Images/full_catAndDog/new30521777.jpg +Images/full_catAndDog/new30627113.jpg +Images/full_catAndDog/new30727113.jpg +Images/full_catAndDog/new30827113.jpg +Images/full_catAndDog/new30927113.jpg +Images/full_catAndDog/new31027113.jpg +Images/full_catAndDog/new31123535.jpg +Images/full_catAndDog/new31223535.jpg +Images/full_catAndDog/new31323535.jpg +Images/full_catAndDog/new31423535.jpg +Images/full_catAndDog/new31523535.jpg +Images/full_catAndDog/new31636941.jpg +Images/full_catAndDog/new31736941.jpg +Images/full_catAndDog/new31836941.jpg +Images/full_catAndDog/new31936941.jpg +Images/full_catAndDog/new32036941.jpg +Images/full_catAndDog/new32135179.jpg +Images/full_catAndDog/new32235179.jpg +Images/full_catAndDog/new32335179.jpg +Images/full_catAndDog/new32435179.jpg +Images/full_catAndDog/new32535179.jpg +Images/full_catAndDog/new32640232.jpg +Images/full_catAndDog/new32740232.jpg +Images/full_catAndDog/new32840232.jpg +Images/full_catAndDog/new32940232.jpg +Images/full_catAndDog/new33040232.jpg +Images/full_catAndDog/new33132918.jpg +Images/full_catAndDog/new33232918.jpg +Images/full_catAndDog/new33332918.jpg +Images/full_catAndDog/new33432918.jpg +Images/full_catAndDog/new33532918.jpg +Images/full_catAndDog/new33623301.jpg +Images/full_catAndDog/new33823301.jpg +Images/full_catAndDog/new33923301.jpg +Images/full_catAndDog/new34023301.jpg +Images/full_catAndDog/new34120638.jpg +Images/full_catAndDog/new34220638.jpg +Images/full_catAndDog/new34320638.jpg +Images/full_catAndDog/new34420638.jpg +Images/full_catAndDog/new34520638.jpg +Images/full_catAndDog/new34625801.jpg +Images/full_catAndDog/new34725801.jpg +Images/full_catAndDog/new34825801.jpg +Images/full_catAndDog/new34925801.jpg +Images/full_catAndDog/new35025801.jpg +Images/full_catAndDog/new35134757.jpg +Images/full_catAndDog/new35234757.jpg +Images/full_catAndDog/new35334757.jpg +Images/full_catAndDog/new35434757.jpg +Images/full_catAndDog/new35534757.jpg +Images/full_catAndDog/new35632315.jpg +Images/full_catAndDog/new35732315.jpg +Images/full_catAndDog/new35832315.jpg +Images/full_catAndDog/new35932315.jpg +Images/full_catAndDog/new36032315.jpg +Images/full_catAndDog/new36122612.jpg +Images/full_catAndDog/new36222612.jpg +Images/full_catAndDog/new36322612.jpg +Images/full_catAndDog/new36422612.jpg +Images/full_catAndDog/new36522612.jpg +Images/full_catAndDog/new36633448.jpg +Images/full_catAndDog/new36733448.jpg +Images/full_catAndDog/new36833448.jpg +Images/full_catAndDog/new36933448.jpg +Images/full_catAndDog/new37033448.jpg +Images/full_catAndDog/new37131519.jpg +Images/full_catAndDog/new37231519.jpg +Images/full_catAndDog/new37331519.jpg +Images/full_catAndDog/new37431519.jpg +Images/full_catAndDog/new37531519.jpg +Images/full_catAndDog/new37626978.jpg +Images/full_catAndDog/new37726978.jpg +Images/full_catAndDog/new37826978.jpg +Images/full_catAndDog/new38026978.jpg +Images/full_catAndDog/new38137882.jpg +Images/full_catAndDog/new38237882.jpg +Images/full_catAndDog/new38337882.jpg +Images/full_catAndDog/new38437882.jpg +Images/full_catAndDog/new38537882.jpg +Images/full_catAndDog/new38629413.jpg +Images/full_catAndDog/new38729413.jpg +Images/full_catAndDog/new38829413.jpg +Images/full_catAndDog/new38929413.jpg +Images/full_catAndDog/new39029413.jpg +Images/full_catAndDog/new39137408.jpg +Images/full_catAndDog/new39237408.jpg +Images/full_catAndDog/new39337408.jpg +Images/full_catAndDog/new39437408.jpg +Images/full_catAndDog/new39623307.jpg +Images/full_catAndDog/new39723307.jpg +Images/full_catAndDog/new39823307.jpg +Images/full_catAndDog/new39923307.jpg +Images/full_catAndDog/new40023307.jpg +Images/full_catAndDog/new40136720.jpg +Images/full_catAndDog/new40236720.jpg +Images/full_catAndDog/new40336720.jpg +Images/full_catAndDog/new40436720.jpg +Images/full_catAndDog/new40536720.jpg +Images/full_catAndDog/new40627887.jpg +Images/full_catAndDog/new40727887.jpg +Images/full_catAndDog/new40827887.jpg +Images/full_catAndDog/new40927887.jpg +Images/full_catAndDog/new41027887.jpg +Images/full_catAndDog/new41219107.jpg +Images/full_catAndDog/new41319107.jpg +Images/full_catAndDog/new41419107.jpg +Images/full_catAndDog/new41519107.jpg +Images/full_catAndDog/new41635519.jpg +Images/full_catAndDog/new41735519.jpg +Images/full_catAndDog/new41935519.jpg +Images/full_catAndDog/new42035519.jpg +Images/full_catAndDog/new42140009.jpg +Images/full_catAndDog/new42240009.jpg +Images/full_catAndDog/new42340009.jpg +Images/full_catAndDog/new42440009.jpg +Images/full_catAndDog/new42540009.jpg +Images/full_catAndDog/new42632974.jpg +Images/full_catAndDog/new42732974.jpg +Images/full_catAndDog/new42832974.jpg +Images/full_catAndDog/new42932974.jpg +Images/full_catAndDog/new43032974.jpg +Images/full_catAndDog/new43130023.jpg +Images/full_catAndDog/new43230023.jpg +Images/full_catAndDog/new43330023.jpg +Images/full_catAndDog/new43430023.jpg +Images/full_catAndDog/new43530023.jpg +Images/full_catAndDog/new43632169.jpg +Images/full_catAndDog/new43732169.jpg +Images/full_catAndDog/new43832169.jpg +Images/full_catAndDog/new43932169.jpg +Images/full_catAndDog/new44032169.jpg +Images/full_catAndDog/new44124784.jpg +Images/full_catAndDog/new44224784.jpg +Images/full_catAndDog/new44324784.jpg +Images/full_catAndDog/new44424784.jpg +Images/full_catAndDog/new44524784.jpg +Images/full_catAndDog/new44626071.jpg +Images/full_catAndDog/new44726071.jpg +Images/full_catAndDog/new44826071.jpg +Images/full_catAndDog/new44926071.jpg +Images/full_catAndDog/new45026071.jpg +Images/full_catAndDog/new45128262.jpg +Images/full_catAndDog/new45228262.jpg +Images/full_catAndDog/new45328262.jpg +Images/full_catAndDog/new45428262.jpg +Images/full_catAndDog/new45528262.jpg +Images/full_catAndDog/new45626043.jpg +Images/full_catAndDog/new45726043.jpg +Images/full_catAndDog/new45826043.jpg +Images/full_catAndDog/new45926043.jpg +Images/full_catAndDog/new46026043.jpg +Images/full_catAndDog/new46140785.jpg +Images/full_catAndDog/new46240785.jpg +Images/full_catAndDog/new46340785.jpg +Images/full_catAndDog/new46440785.jpg +Images/full_catAndDog/new46540785.jpg +Images/full_catAndDog/new46631846.jpg +Images/full_catAndDog/new46831846.jpg +Images/full_catAndDog/new46931846.jpg +Images/full_catAndDog/new47031846.jpg +Images/full_catAndDog/new47138899.jpg +Images/full_catAndDog/new47238899.jpg +Images/full_catAndDog/new47338899.jpg +Images/full_catAndDog/new47438899.jpg +Images/full_catAndDog/new47538899.jpg +Images/full_catAndDog/new47627957.jpg +Images/full_catAndDog/new47727957.jpg +Images/full_catAndDog/new47827957.jpg +Images/full_catAndDog/new47927957.jpg +Images/full_catAndDog/new48027957.jpg +Images/full_catAndDog/new48125826.jpg +Images/full_catAndDog/new48225826.jpg +Images/full_catAndDog/new48325826.jpg +Images/full_catAndDog/new48425826.jpg +Images/full_catAndDog/new48525826.jpg +Images/full_catAndDog/new48621197.jpg +Images/full_catAndDog/new48721197.jpg +Images/full_catAndDog/new48821197.jpg +Images/full_catAndDog/new49021197.jpg +Images/full_catAndDog/new49235281.jpg +Images/full_catAndDog/new49335281.jpg +Images/full_catAndDog/new49435281.jpg +Images/full_catAndDog/new49535281.jpg +Images/full_catAndDog/new49625295.jpg +Images/full_catAndDog/new49725295.jpg +Images/full_catAndDog/new49825295.jpg +Images/full_catAndDog/new49925295.jpg +Images/full_catAndDog/new50025295.jpg +Images/full_catAndDog/new50121201.jpg +Images/full_catAndDog/new50221201.jpg +Images/full_catAndDog/new50321201.jpg +Images/full_catAndDog/new50421201.jpg +Images/full_catAndDog/new50521201.jpg +Images/full_catAndDog/new50638450.jpg +Images/full_catAndDog/new50738450.jpg +Images/full_catAndDog/new50838450.jpg +Images/full_catAndDog/new50938450.jpg +Images/full_catAndDog/new51038450.jpg +Images/full_catAndDog/new51136525.jpg +Images/full_catAndDog/new51236525.jpg +Images/full_catAndDog/new51336525.jpg +Images/full_catAndDog/new51436525.jpg +Images/full_catAndDog/new51536525.jpg +Images/full_catAndDog/new51621284.jpg +Images/full_catAndDog/new51721284.jpg +Images/full_catAndDog/new51821284.jpg +Images/full_catAndDog/new51921284.jpg +Images/full_catAndDog/new52021284.jpg +Images/full_catAndDog/new52132381.jpg +Images/full_catAndDog/new52232381.jpg +Images/full_catAndDog/new52332381.jpg +Images/full_catAndDog/new52432381.jpg +Images/full_catAndDog/new52532381.jpg +Images/full_catAndDog/new52631823.jpg +Images/full_catAndDog/new52731823.jpg +Images/full_catAndDog/new52831823.jpg +Images/full_catAndDog/new52931823.jpg +Images/full_catAndDog/new53031823.jpg +Images/full_catAndDog/new53126899.jpg +Images/full_catAndDog/new53226899.jpg +Images/full_catAndDog/new53326899.jpg +Images/full_catAndDog/new53426899.jpg +Images/full_catAndDog/new53526899.jpg +Images/full_catAndDog/new53625813.jpg +Images/full_catAndDog/new53725813.jpg +Images/full_catAndDog/new53825813.jpg +Images/full_catAndDog/new53925813.jpg +Images/full_catAndDog/new54025813.jpg +Images/full_catAndDog/new54119920.jpg +Images/full_catAndDog/new54219920.jpg +Images/full_catAndDog/new54319920.jpg +Images/full_catAndDog/new54419920.jpg +Images/full_catAndDog/new54519920.jpg +Images/full_catAndDog/new54619769.jpg +Images/full_catAndDog/new54819769.jpg +Images/full_catAndDog/new54919769.jpg +Images/full_catAndDog/new55019769.jpg +Images/full_catAndDog/new55121187.jpg +Images/full_catAndDog/new55221187.jpg +Images/full_catAndDog/new55321187.jpg +Images/full_catAndDog/new55421187.jpg +Images/full_catAndDog/new55521187.jpg +Images/full_catAndDog/new55625127.jpg +Images/full_catAndDog/new55725127.jpg +Images/full_catAndDog/new55825127.jpg +Images/full_catAndDog/new55925127.jpg +Images/full_catAndDog/new56025127.jpg +Images/full_catAndDog/new56132267.jpg +Images/full_catAndDog/new56232267.jpg +Images/full_catAndDog/new56332267.jpg +Images/full_catAndDog/new56432267.jpg +Images/full_catAndDog/new56532267.jpg +Images/full_catAndDog/new56623997.jpg +Images/full_catAndDog/new56823997.jpg +Images/full_catAndDog/new56923997.jpg +Images/full_catAndDog/new57023997.jpg +Images/full_catAndDog/new57133582.jpg +Images/full_catAndDog/new57233582.jpg +Images/full_catAndDog/new57333582.jpg +Images/full_catAndDog/new57433582.jpg +Images/full_catAndDog/new57533582.jpg +Images/full_catAndDog/new57629875.jpg +Images/full_catAndDog/new57729875.jpg +Images/full_catAndDog/new57929875.jpg +Images/full_catAndDog/new58029875.jpg +Images/full_catAndDog/new58134860.jpg +Images/full_catAndDog/new58234860.jpg +Images/full_catAndDog/new58334860.jpg +Images/full_catAndDog/new58434860.jpg +Images/full_catAndDog/new58534860.jpg +Images/full_catAndDog/new58632342.jpg +Images/full_catAndDog/new58732342.jpg +Images/full_catAndDog/new58832342.jpg +Images/full_catAndDog/new58932342.jpg +Images/full_catAndDog/new59032342.jpg +Images/full_catAndDog/new59130790.jpg +Images/full_catAndDog/new59230790.jpg +Images/full_catAndDog/new59330790.jpg +Images/full_catAndDog/new59430790.jpg +Images/full_catAndDog/new59530790.jpg +Images/full_catAndDog/new59622029.jpg +Images/full_catAndDog/new59722029.jpg +Images/full_catAndDog/new59822029.jpg +Images/full_catAndDog/new59922029.jpg +Images/full_catAndDog/new60022029.jpg +Images/full_catAndDog/new60133264.jpg +Images/full_catAndDog/new60233264.jpg +Images/full_catAndDog/new60333264.jpg +Images/full_catAndDog/new60433264.jpg +Images/full_catAndDog/new60533264.jpg +Images/full_catAndDog/new60634107.jpg +Images/full_catAndDog/new60734107.jpg +Images/full_catAndDog/new60934107.jpg +Images/full_catAndDog/new61034107.jpg +Images/full_catAndDog/new61133951.jpg +Images/full_catAndDog/new61233951.jpg +Images/full_catAndDog/new61333951.jpg +Images/full_catAndDog/new61533951.jpg +Images/full_catAndDog/new61639757.jpg +Images/full_catAndDog/new61739757.jpg +Images/full_catAndDog/new61839757.jpg +Images/full_catAndDog/new61939757.jpg +Images/full_catAndDog/new62039757.jpg +Images/full_catAndDog/new62131638.jpg +Images/full_catAndDog/new62231638.jpg +Images/full_catAndDog/new62331638.jpg +Images/full_catAndDog/new62639012.jpg +Images/full_catAndDog/new62739012.jpg +Images/full_catAndDog/new62839012.jpg +Images/full_catAndDog/new62939012.jpg +Images/full_catAndDog/new63039012.jpg +Images/full_catAndDog/new63139996.jpg +Images/full_catAndDog/new63239996.jpg +Images/full_catAndDog/new63339996.jpg +Images/full_catAndDog/new63439996.jpg +Images/full_catAndDog/new63539996.jpg +Images/full_catAndDog/new63635869.jpg +Images/full_catAndDog/new63735869.jpg +Images/full_catAndDog/new63835869.jpg +Images/full_catAndDog/new63935869.jpg +Images/full_catAndDog/new64035869.jpg +Images/full_catAndDog/new64138896.jpg +Images/full_catAndDog/new64238896.jpg +Images/full_catAndDog/new64338896.jpg +Images/full_catAndDog/new64438896.jpg +Images/full_catAndDog/new64538896.jpg +Images/full_catAndDog/new64621136.jpg +Images/full_catAndDog/new64721136.jpg +Images/full_catAndDog/new64821136.jpg +Images/full_catAndDog/new64921136.jpg +Images/full_catAndDog/new65021136.jpg +Images/full_catAndDog/new65132509.jpg +Images/full_catAndDog/new65232509.jpg +Images/full_catAndDog/new65332509.jpg +Images/full_catAndDog/new65432509.jpg +Images/full_catAndDog/new65532509.jpg +Images/full_catAndDog/new65628143.jpg +Images/full_catAndDog/new65728143.jpg +Images/full_catAndDog/new65828143.jpg +Images/full_catAndDog/new65928143.jpg +Images/full_catAndDog/new66028143.jpg +Images/full_catAndDog/new66123800.jpg +Images/full_catAndDog/new66223800.jpg +Images/full_catAndDog/new66323800.jpg +Images/full_catAndDog/new66423800.jpg +Images/full_catAndDog/new66523800.jpg +Images/full_catAndDog/new66625839.jpg +Images/full_catAndDog/new66725839.jpg +Images/full_catAndDog/new66825839.jpg +Images/full_catAndDog/new66925839.jpg +Images/full_catAndDog/new67025839.jpg +Images/full_catAndDog/new67132755.jpg +Images/full_catAndDog/new67332755.jpg +Images/full_catAndDog/new67432755.jpg +Images/full_catAndDog/new67532755.jpg +Images/full_catAndDog/new67622227.jpg +Images/full_catAndDog/new67722227.jpg +Images/full_catAndDog/new67822227.jpg +Images/full_catAndDog/new67922227.jpg +Images/full_catAndDog/new68022227.jpg +Images/full_catAndDog/new68119750.jpg +Images/full_catAndDog/new68219750.jpg +Images/full_catAndDog/new68319750.jpg +Images/full_catAndDog/new68419750.jpg +Images/full_catAndDog/new68519750.jpg +Images/full_catAndDog/new68629793.jpg +Images/full_catAndDog/new68729793.jpg +Images/full_catAndDog/new68829793.jpg +Images/full_catAndDog/new68929793.jpg +Images/full_catAndDog/new69029793.jpg +Images/full_catAndDog/new69129471.jpg +Images/full_catAndDog/new69229471.jpg +Images/full_catAndDog/new69329471.jpg +Images/full_catAndDog/new69529471.jpg +Images/full_catAndDog/new69621707.jpg +Images/full_catAndDog/new69721707.jpg +Images/full_catAndDog/new69821707.jpg +Images/full_catAndDog/new69921707.jpg +Images/full_catAndDog/new70021707.jpg +Images/full_catAndDog/new70138312.jpg +Images/full_catAndDog/new70238312.jpg +Images/full_catAndDog/new70338312.jpg +Images/full_catAndDog/new70438312.jpg +Images/full_catAndDog/new70538312.jpg +Images/full_catAndDog/new70628664.jpg +Images/full_catAndDog/new70728664.jpg +Images/full_catAndDog/new70828664.jpg +Images/full_catAndDog/new70928664.jpg +Images/full_catAndDog/new71135646.jpg +Images/full_catAndDog/new71235646.jpg +Images/full_catAndDog/new71435646.jpg +Images/full_catAndDog/new71535646.jpg +Images/full_catAndDog/new71620804.jpg +Images/full_catAndDog/new71720804.jpg +Images/full_catAndDog/new71820804.jpg +Images/full_catAndDog/new71920804.jpg +Images/full_catAndDog/new72020804.jpg +Images/full_catAndDog/new72131688.jpg +Images/full_catAndDog/new72231688.jpg +Images/full_catAndDog/new72331688.jpg +Images/full_catAndDog/new72431688.jpg +Images/full_catAndDog/new72531688.jpg +Images/full_catAndDog/new72640603.jpg +Images/full_catAndDog/new72740603.jpg +Images/full_catAndDog/new72840603.jpg +Images/full_catAndDog/new72940603.jpg +Images/full_catAndDog/new73040603.jpg +Images/full_catAndDog/new73138143.jpg +Images/full_catAndDog/new73238143.jpg +Images/full_catAndDog/new73338143.jpg +Images/full_catAndDog/new73438143.jpg +Images/full_catAndDog/new73538143.jpg +Images/full_catAndDog/new73619904.jpg +Images/full_catAndDog/new73719904.jpg +Images/full_catAndDog/new73919904.jpg +Images/full_catAndDog/new74019904.jpg +Images/full_catAndDog/new74138349.jpg +Images/full_catAndDog/new74238349.jpg +Images/full_catAndDog/new74338349.jpg +Images/full_catAndDog/new74438349.jpg +Images/full_catAndDog/new74538349.jpg +Images/full_catAndDog/new74627292.jpg +Images/full_catAndDog/new74727292.jpg +Images/full_catAndDog/new74827292.jpg +Images/full_catAndDog/new74927292.jpg +Images/full_catAndDog/new75027292.jpg +Images/full_catAndDog/new75124633.jpg +Images/full_catAndDog/new75224633.jpg +Images/full_catAndDog/new75324633.jpg +Images/full_catAndDog/new75424633.jpg +Images/full_catAndDog/new75524633.jpg +Images/full_catAndDog/new75626829.jpg +Images/full_catAndDog/new75726829.jpg +Images/full_catAndDog/new75826829.jpg +Images/full_catAndDog/new75926829.jpg +Images/full_catAndDog/new76026829.jpg +Images/full_catAndDog/new76137652.jpg +Images/full_catAndDog/new76237652.jpg +Images/full_catAndDog/new76337652.jpg +Images/full_catAndDog/new76437652.jpg +Images/full_catAndDog/new76537652.jpg +Images/full_catAndDog/new76632929.jpg +Images/full_catAndDog/new76732929.jpg +Images/full_catAndDog/new76832929.jpg +Images/full_catAndDog/new76932929.jpg +Images/full_catAndDog/new77032929.jpg +Images/full_catAndDog/new77133071.jpg +Images/full_catAndDog/new77233071.jpg +Images/full_catAndDog/new77333071.jpg +Images/full_catAndDog/new77433071.jpg +Images/full_catAndDog/new77533071.jpg +Images/full_catAndDog/new77635416.jpg +Images/full_catAndDog/new77735416.jpg +Images/full_catAndDog/new77835416.jpg +Images/full_catAndDog/new77935416.jpg +Images/full_catAndDog/new78035416.jpg +Images/full_catAndDog/new78124449.jpg +Images/full_catAndDog/new78224449.jpg +Images/full_catAndDog/new78324449.jpg +Images/full_catAndDog/new78424449.jpg +Images/full_catAndDog/new78524449.jpg +Images/full_catAndDog/new78622327.jpg +Images/full_catAndDog/new78722327.jpg +Images/full_catAndDog/new78822327.jpg +Images/full_catAndDog/new78922327.jpg +Images/full_catAndDog/new79022327.jpg +Images/full_catAndDog/new79125957.jpg +Images/full_catAndDog/new79225957.jpg +Images/full_catAndDog/new79325957.jpg +Images/full_catAndDog/new79425957.jpg +Images/full_catAndDog/new79525957.jpg +Images/full_catAndDog/new79630255.jpg +Images/full_catAndDog/new79730255.jpg +Images/full_catAndDog/new79830255.jpg +Images/full_catAndDog/new79930255.jpg +Images/full_catAndDog/new80030255.jpg +Images/full_catAndDog/new80135124.jpg +Images/full_catAndDog/new80235124.jpg +Images/full_catAndDog/new80335124.jpg +Images/full_catAndDog/new80435124.jpg +Images/full_catAndDog/new80535124.jpg +Images/full_catAndDog/new80635644.jpg +Images/full_catAndDog/new80735644.jpg +Images/full_catAndDog/new80835644.jpg +Images/full_catAndDog/new80935644.jpg +Images/full_catAndDog/new81035644.jpg +Images/full_catAndDog/new81127937.jpg +Images/full_catAndDog/new81227937.jpg +Images/full_catAndDog/new81327937.jpg +Images/full_catAndDog/new81427937.jpg +Images/full_catAndDog/new81527937.jpg +Images/full_catAndDog/new81625775.jpg +Images/full_catAndDog/new81725775.jpg +Images/full_catAndDog/new81825775.jpg +Images/full_catAndDog/new81925775.jpg +Images/full_catAndDog/new82025775.jpg +Images/full_catAndDog/new82120937.jpg +Images/full_catAndDog/new82220937.jpg +Images/full_catAndDog/new82320937.jpg +Images/full_catAndDog/new82420937.jpg +Images/full_catAndDog/new82520937.jpg +Images/full_catAndDog/new82621922.jpg +Images/full_catAndDog/new82721922.jpg +Images/full_catAndDog/new82821922.jpg +Images/full_catAndDog/new82921922.jpg +Images/full_catAndDog/new83021922.jpg +Images/full_catAndDog/new83128222.jpg +Images/full_catAndDog/new83228222.jpg +Images/full_catAndDog/new83328222.jpg +Images/full_catAndDog/new83428222.jpg +Images/full_catAndDog/new83528222.jpg +Images/full_catAndDog/new83632894.jpg +Images/full_catAndDog/new83732894.jpg +Images/full_catAndDog/new83832894.jpg +Images/full_catAndDog/new83932894.jpg +Images/full_catAndDog/new84032894.jpg +Images/full_catAndDog/new84126150.jpg +Images/full_catAndDog/new84226150.jpg +Images/full_catAndDog/new84326150.jpg +Images/full_catAndDog/new84426150.jpg +Images/full_catAndDog/new84526150.jpg +Images/full_catAndDog/new84627376.jpg +Images/full_catAndDog/new84727376.jpg +Images/full_catAndDog/new84827376.jpg +Images/full_catAndDog/new84927376.jpg +Images/full_catAndDog/new85027376.jpg +Images/full_catAndDog/new85126005.jpg +Images/full_catAndDog/new85226005.jpg +Images/full_catAndDog/new85326005.jpg +Images/full_catAndDog/new85426005.jpg +Images/full_catAndDog/new85526005.jpg +Images/full_catAndDog/new85620503.jpg +Images/full_catAndDog/new85720503.jpg +Images/full_catAndDog/new85920503.jpg +Images/full_catAndDog/new86020503.jpg +Images/full_catAndDog/new86135632.jpg +Images/full_catAndDog/new86235632.jpg +Images/full_catAndDog/new86335632.jpg +Images/full_catAndDog/new86435632.jpg +Images/full_catAndDog/new86535632.jpg +Images/full_catAndDog/new86638221.jpg +Images/full_catAndDog/new86738221.jpg +Images/full_catAndDog/new86838221.jpg +Images/full_catAndDog/new86938221.jpg +Images/full_catAndDog/new87038221.jpg +Images/full_catAndDog/new87124027.jpg +Images/full_catAndDog/new87224027.jpg +Images/full_catAndDog/new87324027.jpg +Images/full_catAndDog/new87424027.jpg +Images/full_catAndDog/new87524027.jpg +Images/full_catAndDog/new87735789.jpg +Images/full_catAndDog/new87835789.jpg +Images/full_catAndDog/new87935789.jpg +Images/full_catAndDog/new88035789.jpg +Images/full_catAndDog/new88133783.jpg +Images/full_catAndDog/new88233783.jpg +Images/full_catAndDog/new88333783.jpg +Images/full_catAndDog/new88433783.jpg +Images/full_catAndDog/new88533783.jpg +Images/full_catAndDog/new88635755.jpg +Images/full_catAndDog/new88735755.jpg +Images/full_catAndDog/new88835755.jpg +Images/full_catAndDog/new88935755.jpg +Images/full_catAndDog/new89035755.jpg +Images/full_catAndDog/new89121305.jpg +Images/full_catAndDog/new89221305.jpg +Images/full_catAndDog/new89321305.jpg +Images/full_catAndDog/new89421305.jpg +Images/full_catAndDog/new89632418.jpg +Images/full_catAndDog/new89732418.jpg +Images/full_catAndDog/new89832418.jpg +Images/full_catAndDog/new89932418.jpg +Images/full_catAndDog/new90032418.jpg +Images/full_catAndDog/new90119536.jpg +Images/full_catAndDog/new90219536.jpg +Images/full_catAndDog/new90319536.jpg +Images/full_catAndDog/new90419536.jpg +Images/full_catAndDog/new90519536.jpg +Images/full_catAndDog/new90639907.jpg +Images/full_catAndDog/new90739907.jpg +Images/full_catAndDog/new90839907.jpg +Images/full_catAndDog/new90939907.jpg +Images/full_catAndDog/new91039907.jpg +Images/full_catAndDog/new91122482.jpg +Images/full_catAndDog/new91222482.jpg +Images/full_catAndDog/new91322482.jpg +Images/full_catAndDog/new91422482.jpg +Images/full_catAndDog/new91522482.jpg +Images/full_catAndDog/new91623949.jpg +Images/full_catAndDog/new91723949.jpg +Images/full_catAndDog/new91823949.jpg +Images/full_catAndDog/new91923949.jpg +Images/full_catAndDog/new92023949.jpg +Images/full_catAndDog/new92138052.jpg +Images/full_catAndDog/new92238052.jpg +Images/full_catAndDog/new92338052.jpg +Images/full_catAndDog/new92438052.jpg +Images/full_catAndDog/new92538052.jpg +Images/full_catAndDog/new92623308.jpg +Images/full_catAndDog/new92723308.jpg +Images/full_catAndDog/new92823308.jpg +Images/full_catAndDog/new92923308.jpg +Images/full_catAndDog/new93023308.jpg +Images/full_catAndDog/new93131418.jpg +Images/full_catAndDog/new93231418.jpg +Images/full_catAndDog/new93331418.jpg +Images/full_catAndDog/new93431418.jpg +Images/full_catAndDog/new93630281.jpg +Images/full_catAndDog/new93730281.jpg +Images/full_catAndDog/new93830281.jpg +Images/full_catAndDog/new93930281.jpg +Images/full_catAndDog/new94030281.jpg +Images/full_catAndDog/new94128987.jpg +Images/full_catAndDog/new94228987.jpg +Images/full_catAndDog/new94428987.jpg +Images/full_catAndDog/new94528987.jpg +Images/full_catAndDog/new94632316.jpg +Images/full_catAndDog/new94732316.jpg +Images/full_catAndDog/new94832316.jpg +Images/full_catAndDog/new94932316.jpg +Images/full_catAndDog/new95032316.jpg +Images/full_catAndDog/new95139278.jpg +Images/full_catAndDog/new95239278.jpg +Images/full_catAndDog/new95339278.jpg +Images/full_catAndDog/new95439278.jpg +Images/full_catAndDog/new95539278.jpg +Images/full_catAndDog/new95621580.jpg +Images/full_catAndDog/new95721580.jpg +Images/full_catAndDog/new95821580.jpg +Images/full_catAndDog/new95921580.jpg +Images/full_catAndDog/new96021580.jpg +Images/full_catAndDog/new96139413.jpg +Images/full_catAndDog/new96239413.jpg +Images/full_catAndDog/new96339413.jpg +Images/full_catAndDog/new96439413.jpg +Images/full_catAndDog/new96539413.jpg +Images/full_catAndDog/new96719799.jpg +Images/full_catAndDog/new96819799.jpg +Images/full_catAndDog/new96919799.jpg +Images/full_catAndDog/new97019799.jpg +Images/full_catAndDog/new97130956.jpg +Images/full_catAndDog/new97230956.jpg +Images/full_catAndDog/new97330956.jpg +Images/full_catAndDog/new97430956.jpg +Images/full_catAndDog/new97530956.jpg +Images/full_catAndDog/new97630998.jpg +Images/full_catAndDog/new97730998.jpg +Images/full_catAndDog/new97830998.jpg +Images/full_catAndDog/new97930998.jpg +Images/full_catAndDog/new98030998.jpg +Images/full_catAndDog/new98129968.jpg +Images/full_catAndDog/new98229968.jpg +Images/full_catAndDog/new98329968.jpg +Images/full_catAndDog/new98429968.jpg +Images/full_catAndDog/new98529968.jpg +Images/full_catAndDog/new98635798.jpg +Images/full_catAndDog/new98735798.jpg +Images/full_catAndDog/new98835798.jpg +Images/full_catAndDog/new98935798.jpg +Images/full_catAndDog/new99035798.jpg +Images/full_catAndDog/new99127427.jpg +Images/full_catAndDog/new99227427.jpg +Images/full_catAndDog/new99327427.jpg +Images/full_catAndDog/new99427427.jpg +Images/full_catAndDog/new99527427.jpg +Images/full_catAndDog/new99633141.jpg +Images/full_catAndDog/new99733141.jpg +Images/full_catAndDog/new99833141.jpg +Images/full_catAndDog/new99933141.jpg +Images/full_catAndDog/new100033141.jpg +Images/full_catAndDog/new100127482.jpg +Images/full_catAndDog/new100227482.jpg +Images/full_catAndDog/new100427482.jpg +Images/full_catAndDog/new100527482.jpg +Images/full_catAndDog/new100733475.jpg +Images/full_catAndDog/new100833475.jpg +Images/full_catAndDog/new100933475.jpg +Images/full_catAndDog/new101033475.jpg +Images/full_catAndDog/new101128604.jpg +Images/full_catAndDog/new101228604.jpg +Images/full_catAndDog/new101328604.jpg +Images/full_catAndDog/new101428604.jpg +Images/full_catAndDog/new101528604.jpg +Images/full_catAndDog/new101627148.jpg +Images/full_catAndDog/new101727148.jpg +Images/full_catAndDog/new101827148.jpg +Images/full_catAndDog/new101927148.jpg +Images/full_catAndDog/new102027148.jpg +Images/full_catAndDog/new102127358.jpg +Images/full_catAndDog/new102227358.jpg +Images/full_catAndDog/new102327358.jpg +Images/full_catAndDog/new102427358.jpg +Images/full_catAndDog/new102527358.jpg +Images/full_catAndDog/new102627475.jpg +Images/full_catAndDog/new102727475.jpg +Images/full_catAndDog/new102827475.jpg +Images/full_catAndDog/new102927475.jpg +Images/full_catAndDog/new103027475.jpg +Images/full_catAndDog/new103138452.jpg +Images/full_catAndDog/new103238452.jpg +Images/full_catAndDog/new103338452.jpg +Images/full_catAndDog/new103438452.jpg +Images/full_catAndDog/new103538452.jpg +Images/full_catAndDog/new103640670.jpg +Images/full_catAndDog/new103740670.jpg +Images/full_catAndDog/new103840670.jpg +Images/full_catAndDog/new103940670.jpg +Images/full_catAndDog/new104040670.jpg +Images/full_catAndDog/new104128590.jpg +Images/full_catAndDog/new104228590.jpg +Images/full_catAndDog/new104328590.jpg +Images/full_catAndDog/new104428590.jpg +Images/full_catAndDog/new104528590.jpg +Images/full_catAndDog/new104631333.jpg +Images/full_catAndDog/new104731333.jpg +Images/full_catAndDog/new104831333.jpg +Images/full_catAndDog/new104931333.jpg +Images/full_catAndDog/new105031333.jpg +Images/full_catAndDog/new105121435.jpg +Images/full_catAndDog/new105221435.jpg +Images/full_catAndDog/new105321435.jpg +Images/full_catAndDog/new105421435.jpg +Images/full_catAndDog/new105521435.jpg +Images/full_catAndDog/new105640428.jpg +Images/full_catAndDog/new105740428.jpg +Images/full_catAndDog/new105840428.jpg +Images/full_catAndDog/new106040428.jpg +Images/full_catAndDog/new106129252.jpg +Images/full_catAndDog/new106229252.jpg +Images/full_catAndDog/new106329252.jpg +Images/full_catAndDog/new106429252.jpg +Images/full_catAndDog/new106529252.jpg +Images/full_catAndDog/new106629749.jpg +Images/full_catAndDog/new106729749.jpg +Images/full_catAndDog/new106829749.jpg +Images/full_catAndDog/new107029749.jpg +Images/full_catAndDog/new107135036.jpg +Images/full_catAndDog/new107235036.jpg +Images/full_catAndDog/new107335036.jpg +Images/full_catAndDog/new107435036.jpg +Images/full_catAndDog/new107535036.jpg +Images/full_catAndDog/new107633500.jpg +Images/full_catAndDog/new107733500.jpg +Images/full_catAndDog/new107833500.jpg +Images/full_catAndDog/new107933500.jpg +Images/full_catAndDog/new108033500.jpg +Images/full_catAndDog/new108128887.jpg +Images/full_catAndDog/new108228887.jpg +Images/full_catAndDog/new108328887.jpg +Images/full_catAndDog/new108428887.jpg +Images/full_catAndDog/new108528887.jpg +Images/full_catAndDog/new108625784.jpg +Images/full_catAndDog/new108725784.jpg +Images/full_catAndDog/new108825784.jpg +Images/full_catAndDog/new108925784.jpg +Images/full_catAndDog/new109135588.jpg +Images/full_catAndDog/new109235588.jpg +Images/full_catAndDog/new109335588.jpg +Images/full_catAndDog/new109624897.jpg +Images/full_catAndDog/new109724897.jpg +Images/full_catAndDog/new109824897.jpg +Images/full_catAndDog/new109924897.jpg +Images/full_catAndDog/new110024897.jpg +Images/full_catAndDog/new110122634.jpg +Images/full_catAndDog/new110222634.jpg +Images/full_catAndDog/new110322634.jpg +Images/full_catAndDog/new110522634.jpg +Images/full_catAndDog/new110626308.jpg +Images/full_catAndDog/new110726308.jpg +Images/full_catAndDog/new110826308.jpg +Images/full_catAndDog/new110926308.jpg +Images/full_catAndDog/new111026308.jpg +Images/full_catAndDog/new111123899.jpg +Images/full_catAndDog/new111223899.jpg +Images/full_catAndDog/new111323899.jpg +Images/full_catAndDog/new111423899.jpg +Images/full_catAndDog/new111523899.jpg +Images/full_catAndDog/new111632344.jpg +Images/full_catAndDog/new111732344.jpg +Images/full_catAndDog/new111832344.jpg +Images/full_catAndDog/new111932344.jpg +Images/full_catAndDog/new112032344.jpg +Images/full_catAndDog/new112126398.jpg +Images/full_catAndDog/new112226398.jpg +Images/full_catAndDog/new112326398.jpg +Images/full_catAndDog/new112426398.jpg +Images/full_catAndDog/new112526398.jpg +Images/full_catAndDog/new112633997.jpg +Images/full_catAndDog/new112733997.jpg +Images/full_catAndDog/new112833997.jpg +Images/full_catAndDog/new112933997.jpg +Images/full_catAndDog/new113033997.jpg +Images/full_catAndDog/new113122288.jpg +Images/full_catAndDog/new113222288.jpg +Images/full_catAndDog/new113322288.jpg +Images/full_catAndDog/new113422288.jpg +Images/full_catAndDog/new113522288.jpg +Images/full_catAndDog/new113725881.jpg +Images/full_catAndDog/new113825881.jpg +Images/full_catAndDog/new113925881.jpg +Images/full_catAndDog/new114025881.jpg +Images/full_catAndDog/new114127233.jpg +Images/full_catAndDog/new114227233.jpg +Images/full_catAndDog/new114327233.jpg +Images/full_catAndDog/new114427233.jpg +Images/full_catAndDog/new114527233.jpg +Images/full_catAndDog/new114623324.jpg +Images/full_catAndDog/new114723324.jpg +Images/full_catAndDog/new114823324.jpg +Images/full_catAndDog/new114923324.jpg +Images/full_catAndDog/new115023324.jpg +Images/full_catAndDog/new115235323.jpg +Images/full_catAndDog/new115335323.jpg +Images/full_catAndDog/new115435323.jpg +Images/full_catAndDog/new115535323.jpg +Images/full_catAndDog/new115640522.jpg +Images/full_catAndDog/new115740522.jpg +Images/full_catAndDog/new115840522.jpg +Images/full_catAndDog/new115940522.jpg +Images/full_catAndDog/new116040522.jpg +Images/full_catAndDog/new116139848.jpg +Images/full_catAndDog/new116239848.jpg +Images/full_catAndDog/new116339848.jpg +Images/full_catAndDog/new116439848.jpg +Images/full_catAndDog/new116539848.jpg +Images/full_catAndDog/new116640093.jpg +Images/full_catAndDog/new116740093.jpg +Images/full_catAndDog/new116840093.jpg +Images/full_catAndDog/new116940093.jpg +Images/full_catAndDog/new117121137.jpg +Images/full_catAndDog/new117221137.jpg +Images/full_catAndDog/new117321137.jpg +Images/full_catAndDog/new117421137.jpg +Images/full_catAndDog/new117521137.jpg +Images/full_catAndDog/new117635196.jpg +Images/full_catAndDog/new117735196.jpg +Images/full_catAndDog/new117835196.jpg +Images/full_catAndDog/new117935196.jpg +Images/full_catAndDog/new118035196.jpg +Images/full_catAndDog/new118126783.jpg +Images/full_catAndDog/new118226783.jpg +Images/full_catAndDog/new118326783.jpg +Images/full_catAndDog/new118426783.jpg +Images/full_catAndDog/new118526783.jpg +Images/full_catAndDog/new118620220.jpg +Images/full_catAndDog/new118720220.jpg +Images/full_catAndDog/new118820220.jpg +Images/full_catAndDog/new118920220.jpg +Images/full_catAndDog/new119020220.jpg +Images/full_catAndDog/new119120811.jpg +Images/full_catAndDog/new119220811.jpg +Images/full_catAndDog/new119320811.jpg +Images/full_catAndDog/new119420811.jpg +Images/full_catAndDog/new119520811.jpg +Images/full_catAndDog/new119619862.jpg +Images/full_catAndDog/new119719862.jpg +Images/full_catAndDog/new119819862.jpg +Images/full_catAndDog/new119919862.jpg +Images/full_catAndDog/new120019862.jpg +Images/full_catAndDog/new120121157.jpg +Images/full_catAndDog/new120221157.jpg +Images/full_catAndDog/new120321157.jpg +Images/full_catAndDog/new120421157.jpg +Images/full_catAndDog/new120521157.jpg +Images/full_catAndDog/new120628679.jpg +Images/full_catAndDog/new120728679.jpg +Images/full_catAndDog/new120928679.jpg +Images/full_catAndDog/new121028679.jpg +Images/full_catAndDog/new121123799.jpg +Images/full_catAndDog/new121223799.jpg +Images/full_catAndDog/new121323799.jpg +Images/full_catAndDog/new121423799.jpg +Images/full_catAndDog/new121523799.jpg +Images/full_catAndDog/new121737301.jpg +Images/full_catAndDog/new121837301.jpg +Images/full_catAndDog/new121937301.jpg +Images/full_catAndDog/new122037301.jpg +Images/full_catAndDog/new122129428.jpg +Images/full_catAndDog/new122229428.jpg +Images/full_catAndDog/new122329428.jpg +Images/full_catAndDog/new122429428.jpg +Images/full_catAndDog/new122529428.jpg +Images/full_catAndDog/new122629831.jpg +Images/full_catAndDog/new122729831.jpg +Images/full_catAndDog/new122829831.jpg +Images/full_catAndDog/new122929831.jpg +Images/full_catAndDog/new123029831.jpg +Images/full_catAndDog/new123134627.jpg +Images/full_catAndDog/new123334627.jpg +Images/full_catAndDog/new123434627.jpg +Images/full_catAndDog/new123534627.jpg +Images/full_catAndDog/new123621632.jpg +Images/full_catAndDog/new123721632.jpg +Images/full_catAndDog/new123821632.jpg +Images/full_catAndDog/new123921632.jpg +Images/full_catAndDog/new124021632.jpg +Images/full_catAndDog/new124127045.jpg +Images/full_catAndDog/new124327045.jpg +Images/full_catAndDog/new124427045.jpg +Images/full_catAndDog/new124527045.jpg +Images/full_catAndDog/new124635661.jpg +Images/full_catAndDog/new124835661.jpg +Images/full_catAndDog/new124935661.jpg +Images/full_catAndDog/new125035661.jpg +Images/full_catAndDog/new125124116.jpg +Images/full_catAndDog/new125224116.jpg +Images/full_catAndDog/new125424116.jpg +Images/full_catAndDog/new125524116.jpg +Images/full_catAndDog/new125622331.jpg +Images/full_catAndDog/new125722331.jpg +Images/full_catAndDog/new125822331.jpg +Images/full_catAndDog/new125922331.jpg +Images/full_catAndDog/new126022331.jpg +Images/full_catAndDog/new126132223.jpg +Images/full_catAndDog/new126232223.jpg +Images/full_catAndDog/new126332223.jpg +Images/full_catAndDog/new126432223.jpg +Images/full_catAndDog/new126532223.jpg +Images/full_catAndDog/new126633813.jpg +Images/full_catAndDog/new126733813.jpg +Images/full_catAndDog/new126833813.jpg +Images/full_catAndDog/new126933813.jpg +Images/full_catAndDog/new127033813.jpg +Images/full_catAndDog/new127119608.jpg +Images/full_catAndDog/new127219608.jpg +Images/full_catAndDog/new127319608.jpg +Images/full_catAndDog/new127419608.jpg +Images/full_catAndDog/new127519608.jpg +Images/full_catAndDog/new127640225.jpg +Images/full_catAndDog/new127740225.jpg +Images/full_catAndDog/new127840225.jpg +Images/full_catAndDog/new127940225.jpg +Images/full_catAndDog/new128040225.jpg +Images/full_catAndDog/new128133411.jpg +Images/full_catAndDog/new128233411.jpg +Images/full_catAndDog/new128333411.jpg +Images/full_catAndDog/new128433411.jpg +Images/full_catAndDog/new128533411.jpg +Images/full_catAndDog/new128625187.jpg +Images/full_catAndDog/new128725187.jpg +Images/full_catAndDog/new128825187.jpg +Images/full_catAndDog/new128925187.jpg +Images/full_catAndDog/new129025187.jpg +Images/full_catAndDog/new129121186.jpg +Images/full_catAndDog/new129221186.jpg +Images/full_catAndDog/new129321186.jpg +Images/full_catAndDog/new129421186.jpg +Images/full_catAndDog/new129521186.jpg +Images/full_catAndDog/new129635349.jpg +Images/full_catAndDog/new129735349.jpg +Images/full_catAndDog/new129835349.jpg +Images/full_catAndDog/new129935349.jpg +Images/full_catAndDog/new130035349.jpg +Images/full_catAndDog/new130131412.jpg +Images/full_catAndDog/new130231412.jpg +Images/full_catAndDog/new130331412.jpg +Images/full_catAndDog/new130431412.jpg +Images/full_catAndDog/new130531412.jpg +Images/full_catAndDog/new130621946.jpg +Images/full_catAndDog/new130721946.jpg +Images/full_catAndDog/new130821946.jpg +Images/full_catAndDog/new130921946.jpg +Images/full_catAndDog/new131021946.jpg +Images/full_catAndDog/new131124678.jpg +Images/full_catAndDog/new131224678.jpg +Images/full_catAndDog/new131324678.jpg +Images/full_catAndDog/new131424678.jpg +Images/full_catAndDog/new131524678.jpg +Images/full_catAndDog/new131627622.jpg +Images/full_catAndDog/new131727622.jpg +Images/full_catAndDog/new131827622.jpg +Images/full_catAndDog/new131927622.jpg +Images/full_catAndDog/new132027622.jpg +Images/full_catAndDog/new132124469.jpg +Images/full_catAndDog/new132224469.jpg +Images/full_catAndDog/new132324469.jpg +Images/full_catAndDog/new132424469.jpg +Images/full_catAndDog/new132524469.jpg +Images/full_catAndDog/new132638923.jpg +Images/full_catAndDog/new132738923.jpg +Images/full_catAndDog/new132838923.jpg +Images/full_catAndDog/new132938923.jpg +Images/full_catAndDog/new133038923.jpg +Images/full_catAndDog/new133125475.jpg +Images/full_catAndDog/new133225475.jpg +Images/full_catAndDog/new133425475.jpg +Images/full_catAndDog/new133525475.jpg +Images/full_catAndDog/new133639348.jpg +Images/full_catAndDog/new133739348.jpg +Images/full_catAndDog/new133839348.jpg +Images/full_catAndDog/new133939348.jpg +Images/full_catAndDog/new134039348.jpg +Images/full_catAndDog/new134119327.jpg +Images/full_catAndDog/new134219327.jpg +Images/full_catAndDog/new134319327.jpg +Images/full_catAndDog/new134419327.jpg +Images/full_catAndDog/new134519327.jpg +Images/full_catAndDog/new134620962.jpg +Images/full_catAndDog/new134720962.jpg +Images/full_catAndDog/new134820962.jpg +Images/full_catAndDog/new134920962.jpg +Images/full_catAndDog/new135121345.jpg +Images/full_catAndDog/new135221345.jpg +Images/full_catAndDog/new135321345.jpg +Images/full_catAndDog/new135421345.jpg +Images/full_catAndDog/new135521345.jpg +Images/full_catAndDog/new135632723.jpg +Images/full_catAndDog/new135732723.jpg +Images/full_catAndDog/new135832723.jpg +Images/full_catAndDog/new135932723.jpg +Images/full_catAndDog/new136032723.jpg +Images/full_catAndDog/new136136644.jpg +Images/full_catAndDog/new136236644.jpg +Images/full_catAndDog/new136336644.jpg +Images/full_catAndDog/new136436644.jpg +Images/full_catAndDog/new136536644.jpg +Images/full_catAndDog/new136638127.jpg +Images/full_catAndDog/new136738127.jpg +Images/full_catAndDog/new136838127.jpg +Images/full_catAndDog/new136938127.jpg +Images/full_catAndDog/new137038127.jpg +Images/full_catAndDog/new137120086.jpg +Images/full_catAndDog/new137220086.jpg +Images/full_catAndDog/new137320086.jpg +Images/full_catAndDog/new137420086.jpg +Images/full_catAndDog/new137520086.jpg +Images/full_catAndDog/new137626897.jpg +Images/full_catAndDog/new137726897.jpg +Images/full_catAndDog/new137826897.jpg +Images/full_catAndDog/new137926897.jpg +Images/full_catAndDog/new138026897.jpg +Images/full_catAndDog/new138124210.jpg +Images/full_catAndDog/new138224210.jpg +Images/full_catAndDog/new138324210.jpg +Images/full_catAndDog/new138424210.jpg +Images/full_catAndDog/new138524210.jpg +Images/full_catAndDog/new138633348.jpg +Images/full_catAndDog/new138733348.jpg +Images/full_catAndDog/new138833348.jpg +Images/full_catAndDog/new138933348.jpg +Images/full_catAndDog/new139033348.jpg +Images/full_catAndDog/new139125060.jpg +Images/full_catAndDog/new139225060.jpg +Images/full_catAndDog/new139325060.jpg +Images/full_catAndDog/new139425060.jpg +Images/full_catAndDog/new139525060.jpg +Images/full_catAndDog/new139621222.jpg +Images/full_catAndDog/new139721222.jpg +Images/full_catAndDog/new139821222.jpg +Images/full_catAndDog/new139921222.jpg +Images/full_catAndDog/new140021222.jpg +Images/full_catAndDog/new140126546.jpg +Images/full_catAndDog/new140226546.jpg +Images/full_catAndDog/new140326546.jpg +Images/full_catAndDog/new140426546.jpg +Images/full_catAndDog/new140526546.jpg +Images/full_catAndDog/new140621279.jpg +Images/full_catAndDog/new140721279.jpg +Images/full_catAndDog/new140821279.jpg +Images/full_catAndDog/new140921279.jpg +Images/full_catAndDog/new141021279.jpg +Images/full_catAndDog/new141124686.jpg +Images/full_catAndDog/new141224686.jpg +Images/full_catAndDog/new141324686.jpg +Images/full_catAndDog/new141424686.jpg +Images/full_catAndDog/new141524686.jpg +Images/full_catAndDog/new141727042.jpg +Images/full_catAndDog/new141827042.jpg +Images/full_catAndDog/new141927042.jpg +Images/full_catAndDog/new142027042.jpg +Images/full_catAndDog/new142126362.jpg +Images/full_catAndDog/new142226362.jpg +Images/full_catAndDog/new142326362.jpg +Images/full_catAndDog/new142426362.jpg +Images/full_catAndDog/new142526362.jpg +Images/full_catAndDog/new142627945.jpg +Images/full_catAndDog/new142827945.jpg +Images/full_catAndDog/new142927945.jpg +Images/full_catAndDog/new143140205.jpg +Images/full_catAndDog/new143240205.jpg +Images/full_catAndDog/new143340205.jpg +Images/full_catAndDog/new143440205.jpg +Images/full_catAndDog/new143540205.jpg +Images/full_catAndDog/new143620038.jpg +Images/full_catAndDog/new143720038.jpg +Images/full_catAndDog/new143820038.jpg +Images/full_catAndDog/new143920038.jpg +Images/full_catAndDog/new144020038.jpg +Images/full_catAndDog/new144131886.jpg +Images/full_catAndDog/new144231886.jpg +Images/full_catAndDog/new144331886.jpg +Images/full_catAndDog/new144431886.jpg +Images/full_catAndDog/new144531886.jpg +Images/full_catAndDog/new144620124.jpg +Images/full_catAndDog/new144720124.jpg +Images/full_catAndDog/new144820124.jpg +Images/full_catAndDog/new145020124.jpg +Images/full_catAndDog/new145122836.jpg +Images/full_catAndDog/new145222836.jpg +Images/full_catAndDog/new145322836.jpg +Images/full_catAndDog/new145422836.jpg +Images/full_catAndDog/new145522836.jpg +Images/full_catAndDog/new145624712.jpg +Images/full_catAndDog/new145724712.jpg +Images/full_catAndDog/new145824712.jpg +Images/full_catAndDog/new145924712.jpg +Images/full_catAndDog/new146024712.jpg +Images/full_catAndDog/new146125119.jpg +Images/full_catAndDog/new146225119.jpg +Images/full_catAndDog/new146325119.jpg +Images/full_catAndDog/new146425119.jpg +Images/full_catAndDog/new146525119.jpg +Images/full_catAndDog/new146622149.jpg +Images/full_catAndDog/new146722149.jpg +Images/full_catAndDog/new146822149.jpg +Images/full_catAndDog/new146922149.jpg +Images/full_catAndDog/new147022149.jpg +Images/full_catAndDog/new147135431.jpg +Images/full_catAndDog/new147235431.jpg +Images/full_catAndDog/new147335431.jpg +Images/full_catAndDog/new147435431.jpg +Images/full_catAndDog/new147535431.jpg +Images/full_catAndDog/new147628605.jpg +Images/full_catAndDog/new147728605.jpg +Images/full_catAndDog/new147828605.jpg +Images/full_catAndDog/new147928605.jpg +Images/full_catAndDog/new148028605.jpg +Images/full_catAndDog/new148140431.jpg +Images/full_catAndDog/new148240431.jpg +Images/full_catAndDog/new148340431.jpg +Images/full_catAndDog/new148440431.jpg +Images/full_catAndDog/new148540431.jpg +Images/full_catAndDog/new148621415.jpg +Images/full_catAndDog/new148721415.jpg +Images/full_catAndDog/new148821415.jpg +Images/full_catAndDog/new148921415.jpg +Images/full_catAndDog/new149021415.jpg +Images/full_catAndDog/new149121160.jpg +Images/full_catAndDog/new149221160.jpg +Images/full_catAndDog/new149421160.jpg +Images/full_catAndDog/new149521160.jpg +Images/full_catAndDog/new149619842.jpg +Images/full_catAndDog/new149719842.jpg +Images/full_catAndDog/new149819842.jpg +Images/full_catAndDog/new149919842.jpg +Images/full_catAndDog/new150019842.jpg +Images/full_catAndDog/new150132337.jpg +Images/full_catAndDog/new150232337.jpg +Images/full_catAndDog/new150332337.jpg +Images/full_catAndDog/new150432337.jpg +Images/full_catAndDog/new150532337.jpg +Images/full_catAndDog/new150622953.jpg +Images/full_catAndDog/new150722953.jpg +Images/full_catAndDog/new150822953.jpg +Images/full_catAndDog/new150922953.jpg +Images/full_catAndDog/new151022953.jpg +Images/full_catAndDog/new151138268.jpg +Images/full_catAndDog/new151238268.jpg +Images/full_catAndDog/new151338268.jpg +Images/full_catAndDog/new151438268.jpg +Images/full_catAndDog/new151538268.jpg +Images/full_catAndDog/new151633214.jpg +Images/full_catAndDog/new151733214.jpg +Images/full_catAndDog/new151833214.jpg +Images/full_catAndDog/new151933214.jpg +Images/full_catAndDog/new152121353.jpg +Images/full_catAndDog/new152221353.jpg +Images/full_catAndDog/new152321353.jpg +Images/full_catAndDog/new152421353.jpg +Images/full_catAndDog/new152521353.jpg +Images/full_catAndDog/new152630568.jpg +Images/full_catAndDog/new152730568.jpg +Images/full_catAndDog/new152830568.jpg +Images/full_catAndDog/new152930568.jpg +Images/full_catAndDog/new153030568.jpg +Images/full_catAndDog/new153123011.jpg +Images/full_catAndDog/new153223011.jpg +Images/full_catAndDog/new153323011.jpg +Images/full_catAndDog/new153423011.jpg +Images/full_catAndDog/new153523011.jpg +Images/full_catAndDog/new153623204.jpg +Images/full_catAndDog/new153723204.jpg +Images/full_catAndDog/new153823204.jpg +Images/full_catAndDog/new153923204.jpg +Images/full_catAndDog/new154023204.jpg +Images/full_catAndDog/new154138466.jpg +Images/full_catAndDog/new154238466.jpg +Images/full_catAndDog/new154438466.jpg +Images/full_catAndDog/new154538466.jpg +Images/full_catAndDog/new154732880.jpg +Images/full_catAndDog/new154832880.jpg +Images/full_catAndDog/new154932880.jpg +Images/full_catAndDog/new155032880.jpg +Images/full_catAndDog/new155135856.jpg +Images/full_catAndDog/new155235856.jpg +Images/full_catAndDog/new155335856.jpg +Images/full_catAndDog/new155435856.jpg +Images/full_catAndDog/new155535856.jpg +Images/full_catAndDog/new155628815.jpg +Images/full_catAndDog/new155728815.jpg +Images/full_catAndDog/new155828815.jpg +Images/full_catAndDog/new155928815.jpg +Images/full_catAndDog/new156028815.jpg +Images/full_catAndDog/new156138613.jpg +Images/full_catAndDog/new156238613.jpg +Images/full_catAndDog/new156338613.jpg +Images/full_catAndDog/new156438613.jpg +Images/full_catAndDog/new156538613.jpg +Images/full_catAndDog/new156623509.jpg +Images/full_catAndDog/new156723509.jpg +Images/full_catAndDog/new156823509.jpg +Images/full_catAndDog/new156923509.jpg +Images/full_catAndDog/new157023509.jpg +Images/full_catAndDog/new157123996.jpg +Images/full_catAndDog/new157223996.jpg +Images/full_catAndDog/new157323996.jpg +Images/full_catAndDog/new157423996.jpg +Images/full_catAndDog/new157523996.jpg +Images/full_catAndDog/new157627289.jpg +Images/full_catAndDog/new157727289.jpg +Images/full_catAndDog/new157827289.jpg +Images/full_catAndDog/new157927289.jpg +Images/full_catAndDog/new158121208.jpg +Images/full_catAndDog/new158221208.jpg +Images/full_catAndDog/new158321208.jpg +Images/full_catAndDog/new158421208.jpg +Images/full_catAndDog/new158521208.jpg +Images/full_catAndDog/new158634994.jpg +Images/full_catAndDog/new158734994.jpg +Images/full_catAndDog/new158834994.jpg +Images/full_catAndDog/new158934994.jpg +Images/full_catAndDog/new159034994.jpg +Images/full_catAndDog/new159133426.jpg +Images/full_catAndDog/new159233426.jpg +Images/full_catAndDog/new159333426.jpg +Images/full_catAndDog/new159433426.jpg +Images/full_catAndDog/new159533426.jpg +Images/full_catAndDog/new159632396.jpg +Images/full_catAndDog/new159732396.jpg +Images/full_catAndDog/new159832396.jpg +Images/full_catAndDog/new159932396.jpg +Images/full_catAndDog/new160032396.jpg +Images/full_catAndDog/new160122916.jpg +Images/full_catAndDog/new160222916.jpg +Images/full_catAndDog/new160322916.jpg +Images/full_catAndDog/new160422916.jpg +Images/full_catAndDog/new160522916.jpg +Images/full_catAndDog/new160620406.jpg +Images/full_catAndDog/new160720406.jpg +Images/full_catAndDog/new160820406.jpg +Images/full_catAndDog/new160920406.jpg +Images/full_catAndDog/new161020406.jpg +Images/full_catAndDog/new161128059.jpg +Images/full_catAndDog/new161228059.jpg +Images/full_catAndDog/new161328059.jpg +Images/full_catAndDog/new161428059.jpg +Images/full_catAndDog/new161528059.jpg +Images/full_catAndDog/new161627424.jpg +Images/full_catAndDog/new161727424.jpg +Images/full_catAndDog/new161827424.jpg +Images/full_catAndDog/new161927424.jpg +Images/full_catAndDog/new162027424.jpg +Images/full_catAndDog/new162138076.jpg +Images/full_catAndDog/new162238076.jpg +Images/full_catAndDog/new162338076.jpg +Images/full_catAndDog/new162438076.jpg +Images/full_catAndDog/new162538076.jpg +Images/full_catAndDog/new162630206.jpg +Images/full_catAndDog/new162730206.jpg +Images/full_catAndDog/new162830206.jpg +Images/full_catAndDog/new162930206.jpg +Images/full_catAndDog/new163030206.jpg +Images/full_catAndDog/new163135064.jpg +Images/full_catAndDog/new163235064.jpg +Images/full_catAndDog/new163335064.jpg +Images/full_catAndDog/new163435064.jpg +Images/full_catAndDog/new163535064.jpg +Images/full_catAndDog/new163622591.jpg +Images/full_catAndDog/new163722591.jpg +Images/full_catAndDog/new163822591.jpg +Images/full_catAndDog/new163922591.jpg +Images/full_catAndDog/new164022591.jpg +Images/full_catAndDog/new164127380.jpg +Images/full_catAndDog/new164227380.jpg +Images/full_catAndDog/new164327380.jpg +Images/full_catAndDog/new164427380.jpg +Images/full_catAndDog/new164527380.jpg +Images/full_catAndDog/new164636558.jpg +Images/full_catAndDog/new164736558.jpg +Images/full_catAndDog/new164836558.jpg +Images/full_catAndDog/new164936558.jpg +Images/full_catAndDog/new165036558.jpg +Images/full_catAndDog/new165137715.jpg +Images/full_catAndDog/new165237715.jpg +Images/full_catAndDog/new165337715.jpg +Images/full_catAndDog/new165437715.jpg +Images/full_catAndDog/new165537715.jpg +Images/full_catAndDog/new165635083.jpg +Images/full_catAndDog/new165735083.jpg +Images/full_catAndDog/new165835083.jpg +Images/full_catAndDog/new165935083.jpg +Images/full_catAndDog/new166035083.jpg +Images/full_catAndDog/new166125738.jpg +Images/full_catAndDog/new166225738.jpg +Images/full_catAndDog/new166325738.jpg +Images/full_catAndDog/new166425738.jpg +Images/full_catAndDog/new166525738.jpg +Images/full_catAndDog/new166634062.jpg +Images/full_catAndDog/new166734062.jpg +Images/full_catAndDog/new166834062.jpg +Images/full_catAndDog/new166934062.jpg +Images/full_catAndDog/new167133683.jpg +Images/full_catAndDog/new167233683.jpg +Images/full_catAndDog/new167333683.jpg +Images/full_catAndDog/new167433683.jpg +Images/full_catAndDog/new167533683.jpg +Images/full_catAndDog/new167623880.jpg +Images/full_catAndDog/new167723880.jpg +Images/full_catAndDog/new167823880.jpg +Images/full_catAndDog/new167923880.jpg +Images/full_catAndDog/new168023880.jpg +Images/full_catAndDog/new168130737.jpg +Images/full_catAndDog/new168230737.jpg +Images/full_catAndDog/new168330737.jpg +Images/full_catAndDog/new168430737.jpg +Images/full_catAndDog/new168530737.jpg +Images/full_catAndDog/new168629768.jpg +Images/full_catAndDog/new168729768.jpg +Images/full_catAndDog/new168929768.jpg +Images/full_catAndDog/new169029768.jpg +Images/full_catAndDog/new169131751.jpg +Images/full_catAndDog/new169231751.jpg +Images/full_catAndDog/new169331751.jpg +Images/full_catAndDog/new169431751.jpg +Images/full_catAndDog/new169531751.jpg +Images/full_catAndDog/new169622709.jpg +Images/full_catAndDog/new169722709.jpg +Images/full_catAndDog/new169822709.jpg +Images/full_catAndDog/new169922709.jpg +Images/full_catAndDog/new170022709.jpg +Images/full_catAndDog/new170124520.jpg +Images/full_catAndDog/new170224520.jpg +Images/full_catAndDog/new170324520.jpg +Images/full_catAndDog/new170424520.jpg +Images/full_catAndDog/new170524520.jpg +Images/full_catAndDog/new170627341.jpg +Images/full_catAndDog/new170727341.jpg +Images/full_catAndDog/new170827341.jpg +Images/full_catAndDog/new170927341.jpg +Images/full_catAndDog/new171027341.jpg +Images/full_catAndDog/new171135088.jpg +Images/full_catAndDog/new171235088.jpg +Images/full_catAndDog/new171335088.jpg +Images/full_catAndDog/new171435088.jpg +Images/full_catAndDog/new171535088.jpg +Images/full_catAndDog/new171624117.jpg +Images/full_catAndDog/new171724117.jpg +Images/full_catAndDog/new171824117.jpg +Images/full_catAndDog/new171924117.jpg +Images/full_catAndDog/new172024117.jpg +Images/full_catAndDog/new172135910.jpg +Images/full_catAndDog/new172235910.jpg +Images/full_catAndDog/new172335910.jpg +Images/full_catAndDog/new172435910.jpg +Images/full_catAndDog/new172535910.jpg +Images/full_catAndDog/new172639525.jpg +Images/full_catAndDog/new172839525.jpg +Images/full_catAndDog/new172939525.jpg +Images/full_catAndDog/new173039525.jpg +Images/full_catAndDog/new173128036.jpg +Images/full_catAndDog/new173228036.jpg +Images/full_catAndDog/new173428036.jpg +Images/full_catAndDog/new173528036.jpg +Images/full_catAndDog/new173626315.jpg +Images/full_catAndDog/new173726315.jpg +Images/full_catAndDog/new173826315.jpg +Images/full_catAndDog/new173926315.jpg +Images/full_catAndDog/new174026315.jpg +Images/full_catAndDog/new174127492.jpg +Images/full_catAndDog/new174227492.jpg +Images/full_catAndDog/new174327492.jpg +Images/full_catAndDog/new174427492.jpg +Images/full_catAndDog/new174527492.jpg +Images/full_catAndDog/new174622538.jpg +Images/full_catAndDog/new174722538.jpg +Images/full_catAndDog/new174822538.jpg +Images/full_catAndDog/new174922538.jpg +Images/full_catAndDog/new175022538.jpg +Images/full_catAndDog/new175124585.jpg +Images/full_catAndDog/new175224585.jpg +Images/full_catAndDog/new175324585.jpg +Images/full_catAndDog/new175424585.jpg +Images/full_catAndDog/new175524585.jpg +Images/full_catAndDog/new175719496.jpg +Images/full_catAndDog/new175819496.jpg +Images/full_catAndDog/new175919496.jpg +Images/full_catAndDog/new176019496.jpg +Images/full_catAndDog/new176139813.jpg +Images/full_catAndDog/new176239813.jpg +Images/full_catAndDog/new176339813.jpg +Images/full_catAndDog/new176439813.jpg +Images/full_catAndDog/new176539813.jpg +Images/full_catAndDog/new176632455.jpg +Images/full_catAndDog/new176732455.jpg +Images/full_catAndDog/new176832455.jpg +Images/full_catAndDog/new176932455.jpg +Images/full_catAndDog/new177032455.jpg +Images/full_catAndDog/new177129256.jpg +Images/full_catAndDog/new177229256.jpg +Images/full_catAndDog/new177329256.jpg +Images/full_catAndDog/new177529256.jpg +Images/full_catAndDog/new177626905.jpg +Images/full_catAndDog/new177726905.jpg +Images/full_catAndDog/new177826905.jpg +Images/full_catAndDog/new177926905.jpg +Images/full_catAndDog/new178026905.jpg +Images/full_catAndDog/new178225898.jpg +Images/full_catAndDog/new178325898.jpg +Images/full_catAndDog/new178425898.jpg +Images/full_catAndDog/new178525898.jpg +Images/full_catAndDog/new178624351.jpg +Images/full_catAndDog/new178724351.jpg +Images/full_catAndDog/new178824351.jpg +Images/full_catAndDog/new178924351.jpg +Images/full_catAndDog/new179024351.jpg +Images/full_catAndDog/new179119653.jpg +Images/full_catAndDog/new179219653.jpg +Images/full_catAndDog/new179319653.jpg +Images/full_catAndDog/new179419653.jpg +Images/full_catAndDog/new179622939.jpg +Images/full_catAndDog/new179722939.jpg +Images/full_catAndDog/new179822939.jpg +Images/full_catAndDog/new179922939.jpg +Images/full_catAndDog/new180022939.jpg +Images/full_catAndDog/new180127139.jpg +Images/full_catAndDog/new180227139.jpg +Images/full_catAndDog/new180327139.jpg +Images/full_catAndDog/new180427139.jpg +Images/full_catAndDog/new180527139.jpg +Images/full_catAndDog/new180627179.jpg +Images/full_catAndDog/new180727179.jpg +Images/full_catAndDog/new180827179.jpg +Images/full_catAndDog/new180927179.jpg +Images/full_catAndDog/new181027179.jpg +Images/full_catAndDog/new181132140.jpg +Images/full_catAndDog/new181332140.jpg +Images/full_catAndDog/new181432140.jpg +Images/full_catAndDog/new181532140.jpg +Images/full_catAndDog/new181633788.jpg +Images/full_catAndDog/new181733788.jpg +Images/full_catAndDog/new181833788.jpg +Images/full_catAndDog/new181933788.jpg +Images/full_catAndDog/new182033788.jpg +Images/full_catAndDog/new182119308.jpg +Images/full_catAndDog/new182219308.jpg +Images/full_catAndDog/new182319308.jpg +Images/full_catAndDog/new182419308.jpg +Images/full_catAndDog/new182519308.jpg +Images/full_catAndDog/new182627720.jpg +Images/full_catAndDog/new182727720.jpg +Images/full_catAndDog/new182827720.jpg +Images/full_catAndDog/new182927720.jpg +Images/full_catAndDog/new183027720.jpg +Images/full_catAndDog/new183121762.jpg +Images/full_catAndDog/new183321762.jpg +Images/full_catAndDog/new183421762.jpg +Images/full_catAndDog/new183521762.jpg +Images/full_catAndDog/new183639962.jpg +Images/full_catAndDog/new183739962.jpg +Images/full_catAndDog/new183939962.jpg +Images/full_catAndDog/new184039962.jpg +Images/full_catAndDog/new184135792.jpg +Images/full_catAndDog/new184335792.jpg +Images/full_catAndDog/new184435792.jpg +Images/full_catAndDog/new184535792.jpg +Images/full_catAndDog/new184640214.jpg +Images/full_catAndDog/new184840214.jpg +Images/full_catAndDog/new184940214.jpg +Images/full_catAndDog/new185040214.jpg +Images/full_catAndDog/new185119666.jpg +Images/full_catAndDog/new185219666.jpg +Images/full_catAndDog/new185319666.jpg +Images/full_catAndDog/new185419666.jpg +Images/full_catAndDog/new185519666.jpg +Images/full_catAndDog/new185622805.jpg +Images/full_catAndDog/new185722805.jpg +Images/full_catAndDog/new185822805.jpg +Images/full_catAndDog/new185922805.jpg +Images/full_catAndDog/new186022805.jpg +Images/full_catAndDog/new186129178.jpg +Images/full_catAndDog/new186229178.jpg +Images/full_catAndDog/new186329178.jpg +Images/full_catAndDog/new186429178.jpg +Images/full_catAndDog/new186529178.jpg +Images/full_catAndDog/new186639450.jpg +Images/full_catAndDog/new186739450.jpg +Images/full_catAndDog/new186839450.jpg +Images/full_catAndDog/new186939450.jpg +Images/full_catAndDog/new187039450.jpg +Images/full_catAndDog/new187133106.jpg +Images/full_catAndDog/new187233106.jpg +Images/full_catAndDog/new187333106.jpg +Images/full_catAndDog/new187433106.jpg +Images/full_catAndDog/new187533106.jpg +Images/full_catAndDog/new187623417.jpg +Images/full_catAndDog/new187723417.jpg +Images/full_catAndDog/new187823417.jpg +Images/full_catAndDog/new187923417.jpg +Images/full_catAndDog/new188023417.jpg +Images/full_catAndDog/new188127527.jpg +Images/full_catAndDog/new188227527.jpg +Images/full_catAndDog/new188327527.jpg +Images/full_catAndDog/new188427527.jpg +Images/full_catAndDog/new188527527.jpg +Images/full_catAndDog/new188629698.jpg +Images/full_catAndDog/new188729698.jpg +Images/full_catAndDog/new188829698.jpg +Images/full_catAndDog/new188929698.jpg +Images/full_catAndDog/new189029698.jpg +Images/full_catAndDog/new189130596.jpg +Images/full_catAndDog/new189230596.jpg +Images/full_catAndDog/new189330596.jpg +Images/full_catAndDog/new189430596.jpg +Images/full_catAndDog/new189530596.jpg +Images/full_catAndDog/new189620332.jpg +Images/full_catAndDog/new189720332.jpg +Images/full_catAndDog/new189820332.jpg +Images/full_catAndDog/new189920332.jpg +Images/full_catAndDog/new190020332.jpg +Images/full_catAndDog/new190119900.jpg +Images/full_catAndDog/new190219900.jpg +Images/full_catAndDog/new190319900.jpg +Images/full_catAndDog/new190419900.jpg +Images/full_catAndDog/new190519900.jpg +Images/full_catAndDog/new190620800.jpg +Images/full_catAndDog/new190720800.jpg +Images/full_catAndDog/new190820800.jpg +Images/full_catAndDog/new190920800.jpg +Images/full_catAndDog/new191020800.jpg +Images/full_catAndDog/new191126662.jpg +Images/full_catAndDog/new191226662.jpg +Images/full_catAndDog/new191326662.jpg +Images/full_catAndDog/new191526662.jpg +Images/full_catAndDog/new191625224.jpg +Images/full_catAndDog/new191725224.jpg +Images/full_catAndDog/new191825224.jpg +Images/full_catAndDog/new191925224.jpg +Images/full_catAndDog/new192025224.jpg +Images/full_catAndDog/new192131597.jpg +Images/full_catAndDog/new192231597.jpg +Images/full_catAndDog/new192331597.jpg +Images/full_catAndDog/new192431597.jpg +Images/full_catAndDog/new192531597.jpg +Images/full_catAndDog/new192726847.jpg +Images/full_catAndDog/new192826847.jpg +Images/full_catAndDog/new192926847.jpg +Images/full_catAndDog/new193026847.jpg +Images/full_catAndDog/new193131469.jpg +Images/full_catAndDog/new193231469.jpg +Images/full_catAndDog/new193331469.jpg +Images/full_catAndDog/new193628402.jpg +Images/full_catAndDog/new193728402.jpg +Images/full_catAndDog/new193928402.jpg +Images/full_catAndDog/new194028402.jpg +Images/full_catAndDog/new194127915.jpg +Images/full_catAndDog/new194227915.jpg +Images/full_catAndDog/new194327915.jpg +Images/full_catAndDog/new194527915.jpg +Images/full_catAndDog/new194627989.jpg +Images/full_catAndDog/new194827989.jpg +Images/full_catAndDog/new194927989.jpg +Images/full_catAndDog/new195027989.jpg +Images/full_catAndDog/new195126497.jpg +Images/full_catAndDog/new195226497.jpg +Images/full_catAndDog/new195326497.jpg +Images/full_catAndDog/new195426497.jpg +Images/full_catAndDog/new195526497.jpg +Images/full_catAndDog/new195626589.jpg +Images/full_catAndDog/new195726589.jpg +Images/full_catAndDog/new195926589.jpg +Images/full_catAndDog/new196026589.jpg +Images/full_catAndDog/new196132590.jpg +Images/full_catAndDog/new196232590.jpg +Images/full_catAndDog/new196332590.jpg +Images/full_catAndDog/new196432590.jpg +Images/full_catAndDog/new196532590.jpg +Images/full_catAndDog/new196624812.jpg +Images/full_catAndDog/new196724812.jpg +Images/full_catAndDog/new196824812.jpg +Images/full_catAndDog/new196924812.jpg +Images/full_catAndDog/new197024812.jpg +Images/full_catAndDog/new197119616.jpg +Images/full_catAndDog/new197219616.jpg +Images/full_catAndDog/new197319616.jpg +Images/full_catAndDog/new197419616.jpg +Images/full_catAndDog/new197519616.jpg +Images/full_catAndDog/new197632194.jpg +Images/full_catAndDog/new197732194.jpg +Images/full_catAndDog/new197832194.jpg +Images/full_catAndDog/new197932194.jpg +Images/full_catAndDog/new198226770.jpg +Images/full_catAndDog/new198326770.jpg +Images/full_catAndDog/new198426770.jpg +Images/full_catAndDog/new198526770.jpg +Images/full_catAndDog/new198620552.jpg +Images/full_catAndDog/new198720552.jpg +Images/full_catAndDog/new198820552.jpg +Images/full_catAndDog/new199139011.jpg +Images/full_catAndDog/new199339011.jpg +Images/full_catAndDog/new199439011.jpg +Images/full_catAndDog/new199539011.jpg +Images/full_catAndDog/new199636547.jpg +Images/full_catAndDog/new199736547.jpg +Images/full_catAndDog/new199836547.jpg +Images/full_catAndDog/new199936547.jpg +Images/full_catAndDog/new200036547.jpg +Images/full_catAndDog/new200122326.jpg +Images/full_catAndDog/new200222326.jpg +Images/full_catAndDog/new200322326.jpg +Images/full_catAndDog/new200422326.jpg +Images/full_catAndDog/new200522326.jpg diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/python/darknet.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/python/darknet.py" new file mode 100644 index 00000000..305f01d6 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/python/darknet.py" @@ -0,0 +1,181 @@ +from ctypes import * +import math +import random +from PIL import Image +import cv2 +import os + +def sample(probs): + s = sum(probs) + probs = [a/s for a in probs] + r = random.uniform(0, 1) + for i in range(len(probs)): + r = r - probs[i] + if r <= 0: + return i + return len(probs)-1 + +def c_array(ctype, values): + arr = (ctype*len(values))() + arr[:] = values + return arr + +class BOX(Structure): + _fields_ = [("x", c_float), + ("y", c_float), + ("w", c_float), + ("h", c_float)] + +class DETECTION(Structure): + _fields_ = [("bbox", BOX), + ("classes", c_int), + ("prob", POINTER(c_float)), + ("mask", POINTER(c_float)), + ("objectness", c_float), + ("sort_class", c_int)] + + +class IMAGE(Structure): + _fields_ = [("w", c_int), + ("h", c_int), + ("c", c_int), + ("data", POINTER(c_float))] + +class METADATA(Structure): + _fields_ = [("classes", c_int), + ("names", POINTER(c_char_p))] + + + +#lib = CDLL("/home/pjreddie/documents/darknet/libdarknet.so", RTLD_GLOBAL) +lib = CDLL(os.path.join(os.getcwd()+'/DARK', "libdarknet.so"), RTLD_GLOBAL) +lib.network_width.argtypes = [c_void_p] +lib.network_width.restype = c_int +lib.network_height.argtypes = [c_void_p] +lib.network_height.restype = c_int + +predict = lib.network_predict +predict.argtypes = [c_void_p, POINTER(c_float)] +predict.restype = POINTER(c_float) + +set_gpu = lib.cuda_set_device +set_gpu.argtypes = [c_int] + +make_image = lib.make_image +make_image.argtypes = [c_int, c_int, c_int] +make_image.restype = IMAGE + +get_network_boxes = lib.get_network_boxes +get_network_boxes.argtypes = [c_void_p, c_int, c_int, c_float, c_float, POINTER(c_int), c_int, POINTER(c_int)] +get_network_boxes.restype = POINTER(DETECTION) + +make_network_boxes = lib.make_network_boxes +make_network_boxes.argtypes = [c_void_p] +make_network_boxes.restype = POINTER(DETECTION) + +free_detections = lib.free_detections +free_detections.argtypes = [POINTER(DETECTION), c_int] + +free_ptrs = lib.free_ptrs +free_ptrs.argtypes = [POINTER(c_void_p), c_int] + +network_predict = lib.network_predict +network_predict.argtypes = [c_void_p, POINTER(c_float)] + +reset_rnn = lib.reset_rnn +reset_rnn.argtypes = [c_void_p] + +load_net = lib.load_network +load_net.argtypes = [c_char_p, c_char_p, c_int] +load_net.restype = c_void_p + +do_nms_obj = lib.do_nms_obj +do_nms_obj.argtypes = [POINTER(DETECTION), c_int, c_int, c_float] + +do_nms_sort = lib.do_nms_sort +do_nms_sort.argtypes = [POINTER(DETECTION), c_int, c_int, c_float] + +free_image = lib.free_image +free_image.argtypes = [IMAGE] + +letterbox_image = lib.letterbox_image +letterbox_image.argtypes = [IMAGE, c_int, c_int] +letterbox_image.restype = IMAGE + +load_meta = lib.get_metadata +lib.get_metadata.argtypes = [c_char_p] +lib.get_metadata.restype = METADATA + +load_image = lib.load_image_color +load_image.argtypes = [c_char_p, c_int, c_int] +load_image.restype = IMAGE + +rgbgr_image = lib.rgbgr_image +rgbgr_image.argtypes = [IMAGE] + +predict_image = lib.network_predict_image +predict_image.argtypes = [c_void_p, IMAGE] +predict_image.restype = POINTER(c_float) + +def classify(net, meta, im): + out = predict_image(net, im) + res = [] + for i in range(meta.classes): + res.append((meta.names[i], out[i])) + res = sorted(res, key=lambda x: -x[1]) + return res + +def detect(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45): + image = image.encode('utf-8') + im = load_image(image, 0, 0) + num = c_int(0) + pnum = pointer(num) + predict_image(net, im) + dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, None, 0, pnum) + num = pnum[0] + if (nms): do_nms_obj(dets, num, meta.classes, nms); + + res = [] + for j in range(num): + for i in range(meta.classes): + if dets[j].prob[i] > 0: + b = dets[j].bbox + res.append((meta.names[i], dets[j].prob[i], (b.x, b.y, b.w, b.h))) + res = sorted(res, key=lambda x: -x[1]) + free_image(im) + free_detections(dets, num) + return res + +def detect_s(net, meta, image, thresh=.5, hier_thresh=.5, nms=.45): + cv2.imwrite('DARK/dummy/m.jpg',image) + im = load_image('DARK/dummy/m.jpg'.encode('utf-8'), 0, 0) + num = c_int(0) + pnum = pointer(num) + predict_image(net, im) + dets = get_network_boxes(net, im.w, im.h, thresh, hier_thresh, None, 0, pnum) + num = pnum[0] + if (nms): do_nms_obj(dets, num, meta.classes, nms); + + res = [] + for j in range(num): + for i in range(meta.classes): + if dets[j].prob[i] > 0: + b = dets[j].bbox + res.append((meta.names[i], dets[j].prob[i], (b.x, b.y, b.w, b.h))) + res = sorted(res, key=lambda x: -x[1]) + free_image(im) + free_detections(dets, num) + return res + +if __name__ == "__main__": + #net = load_net("cfg/densenet201.cfg", "/home/pjreddie/trained/densenet201.weights", 0) + #im = load_image("data/wolf.jpg", 0, 0) + #meta = load_meta("cfg/imagenet1k.data") + #r = classify(net, meta, im) + #print r[:10] + net = load_net("cfg/tiny-yolo.cfg".encode('utf-8'), "tiny-yolo.weights".encode('utf-8'), 0) + meta = load_meta("cfg/coco.data".encode('utf-8')) + r = detect(net, meta, "data/dog.jpg") + print(r) + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/python/proverbot.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/python/proverbot.py" new file mode 100644 index 00000000..095aae8f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/python/proverbot.py" @@ -0,0 +1,37 @@ +from darknet import * + +def predict_tactic(net, s): + prob = 0 + d = c_array(c_float, [0.0]*256) + tac = '' + if not len(s): + s = '\n' + for c in s[:-1]: + d[ord(c)] = 1 + pred = predict(net, d) + d[ord(c)] = 0 + c = s[-1] + while 1: + d[ord(c)] = 1 + pred = predict(net, d) + d[ord(c)] = 0 + pred = [pred[i] for i in range(256)] + ind = sample(pred) + c = chr(ind) + prob += math.log(pred[ind]) + if len(tac) and tac[-1] == '.': + break + tac = tac + c + return (tac, prob) + +def predict_tactics(net, s, n): + tacs = [] + for i in range(n): + reset_rnn(net) + tacs.append(predict_tactic(net, s)) + tacs = sorted(tacs, key=lambda x: -x[1]) + return tacs + +net = load_net("cfg/coq.test.cfg", "/home/pjreddie/backup/coq.backup", 0) +t = predict_tactics(net, "+++++\n", 10) +print t diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/dice_label.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/dice_label.sh" new file mode 100644 index 00000000..f19f8a49 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/dice_label.sh" @@ -0,0 +1,20 @@ +mkdir -p images +mkdir -p images/orig +mkdir -p images/train +mkdir -p images/val + +ffmpeg -i Face1.mp4 images/orig/face1_%6d.jpg +ffmpeg -i Face2.mp4 images/orig/face2_%6d.jpg +ffmpeg -i Face3.mp4 images/orig/face3_%6d.jpg +ffmpeg -i Face4.mp4 images/orig/face4_%6d.jpg +ffmpeg -i Face5.mp4 images/orig/face5_%6d.jpg +ffmpeg -i Face6.mp4 images/orig/face6_%6d.jpg + +mogrify -resize 100x100^ -gravity center -crop 100x100+0+0 +repage images/orig/* + +ls images/orig/* | shuf | head -n 1000 | xargs mv -t images/val +mv images/orig/* images/train + +find `pwd`/images/train > dice.train.list -name \*.jpg +find `pwd`/images/val > dice.val.list -name \*.jpg + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/gen_tactic.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/gen_tactic.sh" new file mode 100644 index 00000000..ffa30d27 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/gen_tactic.sh" @@ -0,0 +1,5 @@ +#!/bin/bash +# Usage: +# wget http://pjreddie.com/media/files/peek.weights +# scripts/gen_tactic.sh < data/goal.txt +./darknet rnn generatetactic cfg/gru.cfg peek.weights 2>/dev/null diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/get_coco_dataset.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/get_coco_dataset.sh" new file mode 100644 index 00000000..28463015 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/get_coco_dataset.sh" @@ -0,0 +1,31 @@ +#!/bin/bash + +# Clone COCO API +git clone https://github.com/pdollar/coco +cd coco + +mkdir images +cd images + +# Download Images +wget -c https://pjreddie.com/media/files/train2014.zip +wget -c https://pjreddie.com/media/files/val2014.zip + +# Unzip +unzip -q train2014.zip +unzip -q val2014.zip + +cd .. + +# Download COCO Metadata +wget -c https://pjreddie.com/media/files/instances_train-val2014.zip +wget -c https://pjreddie.com/media/files/coco/5k.part +wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part +wget -c https://pjreddie.com/media/files/coco/labels.tgz +tar xzf labels.tgz +unzip -q instances_train-val2014.zip + +# Set Up Image Lists +paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt +paste <(awk "{print \"$PWD\"}" trainvalno5k.txt + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/imagenet_label.sh" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/imagenet_label.sh" new file mode 100644 index 00000000..01e4306e --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/imagenet_label.sh" @@ -0,0 +1,15 @@ +#!/bin/bash + +mkdir -p labelled +wd=`pwd` + +for f in val/*.xml; +do +label=`grep -m1 "" $f | grep -oP '\K[^<]*'` +im=`echo $f | sed 's/val/imgs/; s/xml/JPEG/'` +out=`echo $im | sed 's/JPEG/'${label}'.JPEG/; s/imgs/labelled/'` +ln -s ${wd}/$im ${wd}/$out +done + +find ${wd}/labelled -name \*.JPEG > inet.val.list + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/voc_label.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/voc_label.py" new file mode 100644 index 00000000..679fc366 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/scripts/voc_label.py" @@ -0,0 +1,59 @@ +import xml.etree.ElementTree as ET +import pickle +import os +from os import listdir, getcwd +from os.path import join + +sets=[('2012', 'train'), ('2012', 'val'), ('2007', 'train'), ('2007', 'val'), ('2007', 'test')] + +classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"] + + +def convert(size, box): + dw = 1./(size[0]) + dh = 1./(size[1]) + x = (box[0] + box[1])/2.0 - 1 + y = (box[2] + box[3])/2.0 - 1 + w = box[1] - box[0] + h = box[3] - box[2] + x = x*dw + w = w*dw + y = y*dh + h = h*dh + return (x,y,w,h) + +def convert_annotation(year, image_id): + in_file = open('VOCdevkit/VOC%s/Annotations/%s.xml'%(year, image_id)) + out_file = open('VOCdevkit/VOC%s/labels/%s.txt'%(year, image_id), 'w') + tree=ET.parse(in_file) + root = tree.getroot() + size = root.find('size') + w = int(size.find('width').text) + h = int(size.find('height').text) + + for obj in root.iter('object'): + difficult = obj.find('difficult').text + cls = obj.find('name').text + if cls not in classes or int(difficult)==1: + continue + cls_id = classes.index(cls) + xmlbox = obj.find('bndbox') + b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text)) + bb = convert((w,h), b) + out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n') + +wd = getcwd() + +for year, image_set in sets: + if not os.path.exists('VOCdevkit/VOC%s/labels/'%(year)): + os.makedirs('VOCdevkit/VOC%s/labels/'%(year)) + image_ids = open('VOCdevkit/VOC%s/ImageSets/Main/%s.txt'%(year, image_set)).read().strip().split() + list_file = open('%s_%s.txt'%(year, image_set), 'w') + for image_id in image_ids: + list_file.write('%s/VOCdevkit/VOC%s/JPEGImages/%s.jpg\n'%(wd, year, image_id)) + convert_annotation(year, image_id) + list_file.close() + +os.system("cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt > train.txt") +os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt > train.all.txt") + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_kernels.cu" new file mode 100644 index 00000000..4dc5804d --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_kernels.cu" @@ -0,0 +1,206 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "activations.h" +#include "cuda.h" +} + + +__device__ float lhtan_activate_kernel(float x) +{ + if(x < 0) return .001f*x; + if(x > 1) return .001f*(x-1.f) + 1.f; + return x; +} +__device__ float lhtan_gradient_kernel(float x) +{ + if(x > 0 && x < 1) return 1; + return .001; +} + +__device__ float hardtan_activate_kernel(float x) +{ + if (x < -1) return -1; + if (x > 1) return 1; + return x; +} +__device__ float linear_activate_kernel(float x){return x;} +__device__ float logistic_activate_kernel(float x){return 1.f/(1.f + expf(-x));} +__device__ float loggy_activate_kernel(float x){return 2.f/(1.f + expf(-x)) - 1;} +__device__ float relu_activate_kernel(float x){return x*(x>0);} +__device__ float elu_activate_kernel(float x){return (x >= 0)*x + (x < 0)*(expf(x)-1);} +__device__ float selu_activate_kernel(float x){return (x >= 0)*1.0507f*x + (x < 0)*1.0507f*1.6732f*(expf(x)-1);} +__device__ float relie_activate_kernel(float x){return (x>0) ? x : .01f*x;} +__device__ float ramp_activate_kernel(float x){return x*(x>0)+.1f*x;} +__device__ float leaky_activate_kernel(float x){return (x>0) ? x : .1f*x;} +__device__ float tanh_activate_kernel(float x){return (2.f/(1 + expf(-2*x)) - 1);} +__device__ float plse_activate_kernel(float x) +{ + if(x < -4) return .01f * (x + 4); + if(x > 4) return .01f * (x - 4) + 1; + return .125f*x + .5f; +} +__device__ float stair_activate_kernel(float x) +{ + int n = floorf(x); + if (n%2 == 0) return floorf(x/2); + else return (x - n) + floorf(x/2); +} + + +__device__ float hardtan_gradient_kernel(float x) +{ + if (x > -1 && x < 1) return 1; + return 0; +} +__device__ float linear_gradient_kernel(float x){return 1;} +__device__ float logistic_gradient_kernel(float x){return (1-x)*x;} +__device__ float loggy_gradient_kernel(float x) +{ + float y = (x+1)/2; + return 2*(1-y)*y; +} +__device__ float relu_gradient_kernel(float x){return (x>0);} +__device__ float elu_gradient_kernel(float x){return (x >= 0) + (x < 0)*(x + 1);} +__device__ float selu_gradient_kernel(float x){return (x >= 0)*1.0507 + (x < 0)*(x + 1.0507*1.6732);} +__device__ float relie_gradient_kernel(float x){return (x>0) ? 1 : .01f;} +__device__ float ramp_gradient_kernel(float x){return (x>0)+.1f;} +__device__ float leaky_gradient_kernel(float x){return (x>0) ? 1 : .1f;} +__device__ float tanh_gradient_kernel(float x){return 1-x*x;} +__device__ float plse_gradient_kernel(float x){return (x < 0 || x > 1) ? .01f : .125f;} +__device__ float stair_gradient_kernel(float x) +{ + if (floorf(x) == x) return 0; + return 1; +} + +__device__ float activate_kernel(float x, ACTIVATION a) +{ + switch(a){ + case LINEAR: + return linear_activate_kernel(x); + case LOGISTIC: + return logistic_activate_kernel(x); + case LOGGY: + return loggy_activate_kernel(x); + case RELU: + return relu_activate_kernel(x); + case ELU: + return elu_activate_kernel(x); + case SELU: + return selu_activate_kernel(x); + case RELIE: + return relie_activate_kernel(x); + case RAMP: + return ramp_activate_kernel(x); + case LEAKY: + return leaky_activate_kernel(x); + case TANH: + return tanh_activate_kernel(x); + case PLSE: + return plse_activate_kernel(x); + case STAIR: + return stair_activate_kernel(x); + case HARDTAN: + return hardtan_activate_kernel(x); + case LHTAN: + return lhtan_activate_kernel(x); + } + return 0; +} + +__device__ float gradient_kernel(float x, ACTIVATION a) +{ + switch(a){ + case LINEAR: + return linear_gradient_kernel(x); + case LOGISTIC: + return logistic_gradient_kernel(x); + case LOGGY: + return loggy_gradient_kernel(x); + case RELU: + return relu_gradient_kernel(x); + case ELU: + return elu_gradient_kernel(x); + case SELU: + return selu_gradient_kernel(x); + case RELIE: + return relie_gradient_kernel(x); + case RAMP: + return ramp_gradient_kernel(x); + case LEAKY: + return leaky_gradient_kernel(x); + case TANH: + return tanh_gradient_kernel(x); + case PLSE: + return plse_gradient_kernel(x); + case STAIR: + return stair_gradient_kernel(x); + case HARDTAN: + return hardtan_gradient_kernel(x); + case LHTAN: + return lhtan_gradient_kernel(x); + } + return 0; +} + +__global__ void binary_gradient_array_kernel(float *x, float *dy, int n, int s, BINARY_ACTIVATION a, float *dx) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + int i = id % s; + int b = id / s; + float x1 = x[b*s + i]; + float x2 = x[b*s + s/2 + i]; + if(id < n) { + float de = dy[id]; + dx[b*s + i] = x2*de; + dx[b*s + s/2 + i] = x1*de; + } +} + +extern "C" void binary_gradient_array_gpu(float *x, float *dx, int n, int size, BINARY_ACTIVATION a, float *y) +{ + binary_gradient_array_kernel<<>>(x, dx, n/2, size, a, y); + check_error(cudaPeekAtLastError()); +} +__global__ void binary_activate_array_kernel(float *x, int n, int s, BINARY_ACTIVATION a, float *y) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + int i = id % s; + int b = id / s; + float x1 = x[b*s + i]; + float x2 = x[b*s + s/2 + i]; + if(id < n) y[id] = x1*x2; +} + +extern "C" void binary_activate_array_gpu(float *x, int n, int size, BINARY_ACTIVATION a, float *y) +{ + binary_activate_array_kernel<<>>(x, n/2, size, a, y); + check_error(cudaPeekAtLastError()); +} + +__global__ void activate_array_kernel(float *x, int n, ACTIVATION a) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n) x[i] = activate_kernel(x[i], a); +} + +__global__ void gradient_array_kernel(float *x, int n, ACTIVATION a, float *delta) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n) delta[i] *= gradient_kernel(x[i], a); +} + +extern "C" void activate_array_gpu(float *x, int n, ACTIVATION a) +{ + activate_array_kernel<<>>(x, n, a); + check_error(cudaPeekAtLastError()); +} + +extern "C" void gradient_array_gpu(float *x, int n, ACTIVATION a, float *delta) +{ + gradient_array_kernel<<>>(x, n, a, delta); + check_error(cudaPeekAtLastError()); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_layer.c" new file mode 100644 index 00000000..b4ba9539 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_layer.c" @@ -0,0 +1,63 @@ +#include "activation_layer.h" +#include "utils.h" +#include "cuda.h" +#include "blas.h" +#include "gemm.h" + +#include +#include +#include +#include + +layer make_activation_layer(int batch, int inputs, ACTIVATION activation) +{ + layer l = {0}; + l.type = ACTIVE; + + l.inputs = inputs; + l.outputs = inputs; + l.batch=batch; + + l.output = calloc(batch*inputs, sizeof(float*)); + l.delta = calloc(batch*inputs, sizeof(float*)); + + l.forward = forward_activation_layer; + l.backward = backward_activation_layer; +#ifdef GPU + l.forward_gpu = forward_activation_layer_gpu; + l.backward_gpu = backward_activation_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, inputs*batch); + l.delta_gpu = cuda_make_array(l.delta, inputs*batch); +#endif + l.activation = activation; + fprintf(stderr, "Activation Layer: %d inputs\n", inputs); + return l; +} + +void forward_activation_layer(layer l, network net) +{ + copy_cpu(l.outputs*l.batch, net.input, 1, l.output, 1); + activate_array(l.output, l.outputs*l.batch, l.activation); +} + +void backward_activation_layer(layer l, network net) +{ + gradient_array(l.output, l.outputs*l.batch, l.activation, l.delta); + copy_cpu(l.outputs*l.batch, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void forward_activation_layer_gpu(layer l, network net) +{ + copy_gpu(l.outputs*l.batch, net.input_gpu, 1, l.output_gpu, 1); + activate_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation); +} + +void backward_activation_layer_gpu(layer l, network net) +{ + gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); + copy_gpu(l.outputs*l.batch, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_layer.h" new file mode 100644 index 00000000..42118a84 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activation_layer.h" @@ -0,0 +1,19 @@ +#ifndef ACTIVATION_LAYER_H +#define ACTIVATION_LAYER_H + +#include "activations.h" +#include "layer.h" +#include "network.h" + +layer make_activation_layer(int batch, int inputs, ACTIVATION activation); + +void forward_activation_layer(layer l, network net); +void backward_activation_layer(layer l, network net); + +#ifdef GPU +void forward_activation_layer_gpu(layer l, network net); +void backward_activation_layer_gpu(layer l, network net); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activations.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activations.c" new file mode 100644 index 00000000..da1a17a8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activations.c" @@ -0,0 +1,150 @@ +#include "activations.h" + +#include +#include +#include +#include + +char *get_activation_string(ACTIVATION a) +{ + switch(a){ + case LOGISTIC: + return "logistic"; + case LOGGY: + return "loggy"; + case RELU: + return "relu"; + case ELU: + return "elu"; + case SELU: + return "selu"; + case RELIE: + return "relie"; + case RAMP: + return "ramp"; + case LINEAR: + return "linear"; + case TANH: + return "tanh"; + case PLSE: + return "plse"; + case LEAKY: + return "leaky"; + case STAIR: + return "stair"; + case HARDTAN: + return "hardtan"; + case LHTAN: + return "lhtan"; + default: + break; + } + return "relu"; +} + +ACTIVATION get_activation(char *s) +{ + if (strcmp(s, "logistic")==0) return LOGISTIC; + if (strcmp(s, "loggy")==0) return LOGGY; + if (strcmp(s, "relu")==0) return RELU; + if (strcmp(s, "elu")==0) return ELU; + if (strcmp(s, "selu")==0) return SELU; + if (strcmp(s, "relie")==0) return RELIE; + if (strcmp(s, "plse")==0) return PLSE; + if (strcmp(s, "hardtan")==0) return HARDTAN; + if (strcmp(s, "lhtan")==0) return LHTAN; + if (strcmp(s, "linear")==0) return LINEAR; + if (strcmp(s, "ramp")==0) return RAMP; + if (strcmp(s, "leaky")==0) return LEAKY; + if (strcmp(s, "tanh")==0) return TANH; + if (strcmp(s, "stair")==0) return STAIR; + fprintf(stderr, "Couldn't find activation function %s, going with ReLU\n", s); + return RELU; +} + +float activate(float x, ACTIVATION a) +{ + switch(a){ + case LINEAR: + return linear_activate(x); + case LOGISTIC: + return logistic_activate(x); + case LOGGY: + return loggy_activate(x); + case RELU: + return relu_activate(x); + case ELU: + return elu_activate(x); + case SELU: + return selu_activate(x); + case RELIE: + return relie_activate(x); + case RAMP: + return ramp_activate(x); + case LEAKY: + return leaky_activate(x); + case TANH: + return tanh_activate(x); + case PLSE: + return plse_activate(x); + case STAIR: + return stair_activate(x); + case HARDTAN: + return hardtan_activate(x); + case LHTAN: + return lhtan_activate(x); + } + return 0; +} + +void activate_array(float *x, const int n, const ACTIVATION a) +{ + int i; + for(i = 0; i < n; ++i){ + x[i] = activate(x[i], a); + } +} + +float gradient(float x, ACTIVATION a) +{ + switch(a){ + case LINEAR: + return linear_gradient(x); + case LOGISTIC: + return logistic_gradient(x); + case LOGGY: + return loggy_gradient(x); + case RELU: + return relu_gradient(x); + case ELU: + return elu_gradient(x); + case SELU: + return selu_gradient(x); + case RELIE: + return relie_gradient(x); + case RAMP: + return ramp_gradient(x); + case LEAKY: + return leaky_gradient(x); + case TANH: + return tanh_gradient(x); + case PLSE: + return plse_gradient(x); + case STAIR: + return stair_gradient(x); + case HARDTAN: + return hardtan_gradient(x); + case LHTAN: + return lhtan_gradient(x); + } + return 0; +} + +void gradient_array(const float *x, const int n, const ACTIVATION a, float *delta) +{ + int i; + for(i = 0; i < n; ++i){ + delta[i] *= gradient(x[i], a); + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activations.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activations.h" new file mode 100644 index 00000000..9780d2cf --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/activations.h" @@ -0,0 +1,87 @@ +#ifndef ACTIVATIONS_H +#define ACTIVATIONS_H +#include "darknet.h" +#include "cuda.h" +#include "math.h" + +ACTIVATION get_activation(char *s); + +char *get_activation_string(ACTIVATION a); +float activate(float x, ACTIVATION a); +float gradient(float x, ACTIVATION a); +void gradient_array(const float *x, const int n, const ACTIVATION a, float *delta); +void activate_array(float *x, const int n, const ACTIVATION a); +#ifdef GPU +void activate_array_gpu(float *x, int n, ACTIVATION a); +void gradient_array_gpu(float *x, int n, ACTIVATION a, float *delta); +#endif + +static inline float stair_activate(float x) +{ + int n = floor(x); + if (n%2 == 0) return floor(x/2.); + else return (x - n) + floor(x/2.); +} +static inline float hardtan_activate(float x) +{ + if (x < -1) return -1; + if (x > 1) return 1; + return x; +} +static inline float linear_activate(float x){return x;} +static inline float logistic_activate(float x){return 1./(1. + exp(-x));} +static inline float loggy_activate(float x){return 2./(1. + exp(-x)) - 1;} +static inline float relu_activate(float x){return x*(x>0);} +static inline float elu_activate(float x){return (x >= 0)*x + (x < 0)*(exp(x)-1);} +static inline float selu_activate(float x){return (x >= 0)*1.0507*x + (x < 0)*1.0507*1.6732*(exp(x)-1);} +static inline float relie_activate(float x){return (x>0) ? x : .01*x;} +static inline float ramp_activate(float x){return x*(x>0)+.1*x;} +static inline float leaky_activate(float x){return (x>0) ? x : .1*x;} +static inline float tanh_activate(float x){return (exp(2*x)-1)/(exp(2*x)+1);} +static inline float plse_activate(float x) +{ + if(x < -4) return .01 * (x + 4); + if(x > 4) return .01 * (x - 4) + 1; + return .125*x + .5; +} + +static inline float lhtan_activate(float x) +{ + if(x < 0) return .001*x; + if(x > 1) return .001*(x-1) + 1; + return x; +} +static inline float lhtan_gradient(float x) +{ + if(x > 0 && x < 1) return 1; + return .001; +} + +static inline float hardtan_gradient(float x) +{ + if (x > -1 && x < 1) return 1; + return 0; +} +static inline float linear_gradient(float x){return 1;} +static inline float logistic_gradient(float x){return (1-x)*x;} +static inline float loggy_gradient(float x) +{ + float y = (x+1.)/2.; + return 2*(1-y)*y; +} +static inline float stair_gradient(float x) +{ + if (floor(x) == x) return 0; + return 1; +} +static inline float relu_gradient(float x){return (x>0);} +static inline float elu_gradient(float x){return (x >= 0) + (x < 0)*(x + 1);} +static inline float selu_gradient(float x){return (x >= 0)*1.0507 + (x < 0)*(x + 1.0507*1.6732);} +static inline float relie_gradient(float x){return (x>0) ? 1 : .01;} +static inline float ramp_gradient(float x){return (x>0)+.1;} +static inline float leaky_gradient(float x){return (x>0) ? 1 : .1;} +static inline float tanh_gradient(float x){return 1-x*x;} +static inline float plse_gradient(float x){return (x < 0 || x > 1) ? .01 : .125;} + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer.c" new file mode 100644 index 00000000..83034dbe --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer.c" @@ -0,0 +1,71 @@ +#include "avgpool_layer.h" +#include "cuda.h" +#include + +avgpool_layer make_avgpool_layer(int batch, int w, int h, int c) +{ + fprintf(stderr, "avg %4d x%4d x%4d -> %4d\n", w, h, c, c); + avgpool_layer l = {0}; + l.type = AVGPOOL; + l.batch = batch; + l.h = h; + l.w = w; + l.c = c; + l.out_w = 1; + l.out_h = 1; + l.out_c = c; + l.outputs = l.out_c; + l.inputs = h*w*c; + int output_size = l.outputs * batch; + l.output = calloc(output_size, sizeof(float)); + l.delta = calloc(output_size, sizeof(float)); + l.forward = forward_avgpool_layer; + l.backward = backward_avgpool_layer; + #ifdef GPU + l.forward_gpu = forward_avgpool_layer_gpu; + l.backward_gpu = backward_avgpool_layer_gpu; + l.output_gpu = cuda_make_array(l.output, output_size); + l.delta_gpu = cuda_make_array(l.delta, output_size); + #endif + return l; +} + +void resize_avgpool_layer(avgpool_layer *l, int w, int h) +{ + l->w = w; + l->h = h; + l->inputs = h*w*l->c; +} + +void forward_avgpool_layer(const avgpool_layer l, network net) +{ + int b,i,k; + + for(b = 0; b < l.batch; ++b){ + for(k = 0; k < l.c; ++k){ + int out_index = k + b*l.c; + l.output[out_index] = 0; + for(i = 0; i < l.h*l.w; ++i){ + int in_index = i + l.h*l.w*(k + b*l.c); + l.output[out_index] += net.input[in_index]; + } + l.output[out_index] /= l.h*l.w; + } + } +} + +void backward_avgpool_layer(const avgpool_layer l, network net) +{ + int b,i,k; + + for(b = 0; b < l.batch; ++b){ + for(k = 0; k < l.c; ++k){ + int out_index = k + b*l.c; + for(i = 0; i < l.h*l.w; ++i){ + int in_index = i + l.h*l.w*(k + b*l.c); + net.delta[in_index] += l.delta[out_index] / (l.h*l.w); + } + } + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer.h" new file mode 100644 index 00000000..3bd356c4 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer.h" @@ -0,0 +1,23 @@ +#ifndef AVGPOOL_LAYER_H +#define AVGPOOL_LAYER_H + +#include "image.h" +#include "cuda.h" +#include "layer.h" +#include "network.h" + +typedef layer avgpool_layer; + +image get_avgpool_image(avgpool_layer l); +avgpool_layer make_avgpool_layer(int batch, int w, int h, int c); +void resize_avgpool_layer(avgpool_layer *l, int w, int h); +void forward_avgpool_layer(const avgpool_layer l, network net); +void backward_avgpool_layer(const avgpool_layer l, network net); + +#ifdef GPU +void forward_avgpool_layer_gpu(avgpool_layer l, network net); +void backward_avgpool_layer_gpu(avgpool_layer l, network net); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer_kernels.cu" new file mode 100644 index 00000000..a7eca3ae --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/avgpool_layer_kernels.cu" @@ -0,0 +1,61 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "avgpool_layer.h" +#include "cuda.h" +} + +__global__ void forward_avgpool_layer_kernel(int n, int w, int h, int c, float *input, float *output) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= n) return; + + int k = id % c; + id /= c; + int b = id; + + int i; + int out_index = (k + c*b); + output[out_index] = 0; + for(i = 0; i < w*h; ++i){ + int in_index = i + h*w*(k + b*c); + output[out_index] += input[in_index]; + } + output[out_index] /= w*h; +} + +__global__ void backward_avgpool_layer_kernel(int n, int w, int h, int c, float *in_delta, float *out_delta) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= n) return; + + int k = id % c; + id /= c; + int b = id; + + int i; + int out_index = (k + c*b); + for(i = 0; i < w*h; ++i){ + int in_index = i + h*w*(k + b*c); + in_delta[in_index] += out_delta[out_index] / (w*h); + } +} + +extern "C" void forward_avgpool_layer_gpu(avgpool_layer layer, network net) +{ + size_t n = layer.c*layer.batch; + + forward_avgpool_layer_kernel<<>>(n, layer.w, layer.h, layer.c, net.input_gpu, layer.output_gpu); + check_error(cudaPeekAtLastError()); +} + +extern "C" void backward_avgpool_layer_gpu(avgpool_layer layer, network net) +{ + size_t n = layer.c*layer.batch; + + backward_avgpool_layer_kernel<<>>(n, layer.w, layer.h, layer.c, net.delta_gpu, layer.delta_gpu); + check_error(cudaPeekAtLastError()); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/batchnorm_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/batchnorm_layer.c" new file mode 100644 index 00000000..ebff387c --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/batchnorm_layer.c" @@ -0,0 +1,279 @@ +#include "convolutional_layer.h" +#include "batchnorm_layer.h" +#include "blas.h" +#include + +layer make_batchnorm_layer(int batch, int w, int h, int c) +{ + fprintf(stderr, "Batch Normalization Layer: %d x %d x %d image\n", w,h,c); + layer l = {0}; + l.type = BATCHNORM; + l.batch = batch; + l.h = l.out_h = h; + l.w = l.out_w = w; + l.c = l.out_c = c; + l.output = calloc(h * w * c * batch, sizeof(float)); + l.delta = calloc(h * w * c * batch, sizeof(float)); + l.inputs = w*h*c; + l.outputs = l.inputs; + + l.scales = calloc(c, sizeof(float)); + l.scale_updates = calloc(c, sizeof(float)); + l.biases = calloc(c, sizeof(float)); + l.bias_updates = calloc(c, sizeof(float)); + int i; + for(i = 0; i < c; ++i){ + l.scales[i] = 1; + } + + l.mean = calloc(c, sizeof(float)); + l.variance = calloc(c, sizeof(float)); + + l.rolling_mean = calloc(c, sizeof(float)); + l.rolling_variance = calloc(c, sizeof(float)); + + l.forward = forward_batchnorm_layer; + l.backward = backward_batchnorm_layer; +#ifdef GPU + l.forward_gpu = forward_batchnorm_layer_gpu; + l.backward_gpu = backward_batchnorm_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, h * w * c * batch); + l.delta_gpu = cuda_make_array(l.delta, h * w * c * batch); + + l.biases_gpu = cuda_make_array(l.biases, c); + l.bias_updates_gpu = cuda_make_array(l.bias_updates, c); + + l.scales_gpu = cuda_make_array(l.scales, c); + l.scale_updates_gpu = cuda_make_array(l.scale_updates, c); + + l.mean_gpu = cuda_make_array(l.mean, c); + l.variance_gpu = cuda_make_array(l.variance, c); + + l.rolling_mean_gpu = cuda_make_array(l.mean, c); + l.rolling_variance_gpu = cuda_make_array(l.variance, c); + + l.mean_delta_gpu = cuda_make_array(l.mean, c); + l.variance_delta_gpu = cuda_make_array(l.variance, c); + + l.x_gpu = cuda_make_array(l.output, l.batch*l.outputs); + l.x_norm_gpu = cuda_make_array(l.output, l.batch*l.outputs); + #ifdef CUDNN + cudnnCreateTensorDescriptor(&l.normTensorDesc); + cudnnCreateTensorDescriptor(&l.dstTensorDesc); + cudnnSetTensor4dDescriptor(l.dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l.batch, l.out_c, l.out_h, l.out_w); + cudnnSetTensor4dDescriptor(l.normTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l.out_c, 1, 1); + + #endif +#endif + return l; +} + +void backward_scale_cpu(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates) +{ + int i,b,f; + for(f = 0; f < n; ++f){ + float sum = 0; + for(b = 0; b < batch; ++b){ + for(i = 0; i < size; ++i){ + int index = i + size*(f + n*b); + sum += delta[index] * x_norm[index]; + } + } + scale_updates[f] += sum; + } +} + +void mean_delta_cpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta) +{ + + int i,j,k; + for(i = 0; i < filters; ++i){ + mean_delta[i] = 0; + for (j = 0; j < batch; ++j) { + for (k = 0; k < spatial; ++k) { + int index = j*filters*spatial + i*spatial + k; + mean_delta[i] += delta[index]; + } + } + mean_delta[i] *= (-1./sqrt(variance[i] + .00001f)); + } +} +void variance_delta_cpu(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta) +{ + + int i,j,k; + for(i = 0; i < filters; ++i){ + variance_delta[i] = 0; + for(j = 0; j < batch; ++j){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + i*spatial + k; + variance_delta[i] += delta[index]*(x[index] - mean[i]); + } + } + variance_delta[i] *= -.5 * pow(variance[i] + .00001f, (float)(-3./2.)); + } +} +void normalize_delta_cpu(float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta) +{ + int f, j, k; + for(j = 0; j < batch; ++j){ + for(f = 0; f < filters; ++f){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + f*spatial + k; + delta[index] = delta[index] * 1./(sqrt(variance[f] + .00001f)) + variance_delta[f] * 2. * (x[index] - mean[f]) / (spatial * batch) + mean_delta[f]/(spatial*batch); + } + } + } +} + +void resize_batchnorm_layer(layer *layer, int w, int h) +{ + fprintf(stderr, "Not implemented\n"); +} + +void forward_batchnorm_layer(layer l, network net) +{ + if(l.type == BATCHNORM) copy_cpu(l.outputs*l.batch, net.input, 1, l.output, 1); + copy_cpu(l.outputs*l.batch, l.output, 1, l.x, 1); + if(net.train){ + mean_cpu(l.output, l.batch, l.out_c, l.out_h*l.out_w, l.mean); + variance_cpu(l.output, l.mean, l.batch, l.out_c, l.out_h*l.out_w, l.variance); + + scal_cpu(l.out_c, .99, l.rolling_mean, 1); + axpy_cpu(l.out_c, .01, l.mean, 1, l.rolling_mean, 1); + scal_cpu(l.out_c, .99, l.rolling_variance, 1); + axpy_cpu(l.out_c, .01, l.variance, 1, l.rolling_variance, 1); + + normalize_cpu(l.output, l.mean, l.variance, l.batch, l.out_c, l.out_h*l.out_w); + copy_cpu(l.outputs*l.batch, l.output, 1, l.x_norm, 1); + } else { + normalize_cpu(l.output, l.rolling_mean, l.rolling_variance, l.batch, l.out_c, l.out_h*l.out_w); + } + scale_bias(l.output, l.scales, l.batch, l.out_c, l.out_h*l.out_w); + add_bias(l.output, l.biases, l.batch, l.out_c, l.out_h*l.out_w); +} + +void backward_batchnorm_layer(layer l, network net) +{ + if(!net.train){ + l.mean = l.rolling_mean; + l.variance = l.rolling_variance; + } + backward_bias(l.bias_updates, l.delta, l.batch, l.out_c, l.out_w*l.out_h); + backward_scale_cpu(l.x_norm, l.delta, l.batch, l.out_c, l.out_w*l.out_h, l.scale_updates); + + scale_bias(l.delta, l.scales, l.batch, l.out_c, l.out_h*l.out_w); + + mean_delta_cpu(l.delta, l.variance, l.batch, l.out_c, l.out_w*l.out_h, l.mean_delta); + variance_delta_cpu(l.x, l.delta, l.mean, l.variance, l.batch, l.out_c, l.out_w*l.out_h, l.variance_delta); + normalize_delta_cpu(l.x, l.mean, l.variance, l.mean_delta, l.variance_delta, l.batch, l.out_c, l.out_w*l.out_h, l.delta); + if(l.type == BATCHNORM) copy_cpu(l.outputs*l.batch, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void pull_batchnorm_layer(layer l) +{ + cuda_pull_array(l.scales_gpu, l.scales, l.c); + cuda_pull_array(l.rolling_mean_gpu, l.rolling_mean, l.c); + cuda_pull_array(l.rolling_variance_gpu, l.rolling_variance, l.c); +} +void push_batchnorm_layer(layer l) +{ + cuda_push_array(l.scales_gpu, l.scales, l.c); + cuda_push_array(l.rolling_mean_gpu, l.rolling_mean, l.c); + cuda_push_array(l.rolling_variance_gpu, l.rolling_variance, l.c); +} + +void forward_batchnorm_layer_gpu(layer l, network net) +{ + if(l.type == BATCHNORM) copy_gpu(l.outputs*l.batch, net.input_gpu, 1, l.output_gpu, 1); + copy_gpu(l.outputs*l.batch, l.output_gpu, 1, l.x_gpu, 1); + if (net.train) { +#ifdef CUDNN + float one = 1; + float zero = 0; + cudnnBatchNormalizationForwardTraining(cudnn_handle(), + CUDNN_BATCHNORM_SPATIAL, + &one, + &zero, + l.dstTensorDesc, + l.x_gpu, + l.dstTensorDesc, + l.output_gpu, + l.normTensorDesc, + l.scales_gpu, + l.biases_gpu, + .01, + l.rolling_mean_gpu, + l.rolling_variance_gpu, + .00001, + l.mean_gpu, + l.variance_gpu); +#else + fast_mean_gpu(l.output_gpu, l.batch, l.out_c, l.out_h*l.out_w, l.mean_gpu); + fast_variance_gpu(l.output_gpu, l.mean_gpu, l.batch, l.out_c, l.out_h*l.out_w, l.variance_gpu); + + scal_gpu(l.out_c, .99, l.rolling_mean_gpu, 1); + axpy_gpu(l.out_c, .01, l.mean_gpu, 1, l.rolling_mean_gpu, 1); + scal_gpu(l.out_c, .99, l.rolling_variance_gpu, 1); + axpy_gpu(l.out_c, .01, l.variance_gpu, 1, l.rolling_variance_gpu, 1); + + copy_gpu(l.outputs*l.batch, l.output_gpu, 1, l.x_gpu, 1); + normalize_gpu(l.output_gpu, l.mean_gpu, l.variance_gpu, l.batch, l.out_c, l.out_h*l.out_w); + copy_gpu(l.outputs*l.batch, l.output_gpu, 1, l.x_norm_gpu, 1); + + scale_bias_gpu(l.output_gpu, l.scales_gpu, l.batch, l.out_c, l.out_h*l.out_w); + add_bias_gpu(l.output_gpu, l.biases_gpu, l.batch, l.out_c, l.out_w*l.out_h); +#endif + } else { + normalize_gpu(l.output_gpu, l.rolling_mean_gpu, l.rolling_variance_gpu, l.batch, l.out_c, l.out_h*l.out_w); + scale_bias_gpu(l.output_gpu, l.scales_gpu, l.batch, l.out_c, l.out_h*l.out_w); + add_bias_gpu(l.output_gpu, l.biases_gpu, l.batch, l.out_c, l.out_w*l.out_h); + } + +} + +void backward_batchnorm_layer_gpu(layer l, network net) +{ + if(!net.train){ + l.mean_gpu = l.rolling_mean_gpu; + l.variance_gpu = l.rolling_variance_gpu; + } +#ifdef CUDNN + float one = 1; + float zero = 0; + cudnnBatchNormalizationBackward(cudnn_handle(), + CUDNN_BATCHNORM_SPATIAL, + &one, + &zero, + &one, + &one, + l.dstTensorDesc, + l.x_gpu, + l.dstTensorDesc, + l.delta_gpu, + l.dstTensorDesc, + l.x_norm_gpu, + l.normTensorDesc, + l.scales_gpu, + l.scale_updates_gpu, + l.bias_updates_gpu, + .00001, + l.mean_gpu, + l.variance_gpu); + copy_gpu(l.outputs*l.batch, l.x_norm_gpu, 1, l.delta_gpu, 1); +#else + backward_bias_gpu(l.bias_updates_gpu, l.delta_gpu, l.batch, l.out_c, l.out_w*l.out_h); + backward_scale_gpu(l.x_norm_gpu, l.delta_gpu, l.batch, l.out_c, l.out_w*l.out_h, l.scale_updates_gpu); + + scale_bias_gpu(l.delta_gpu, l.scales_gpu, l.batch, l.out_c, l.out_h*l.out_w); + + fast_mean_delta_gpu(l.delta_gpu, l.variance_gpu, l.batch, l.out_c, l.out_w*l.out_h, l.mean_delta_gpu); + fast_variance_delta_gpu(l.x_gpu, l.delta_gpu, l.mean_gpu, l.variance_gpu, l.batch, l.out_c, l.out_w*l.out_h, l.variance_delta_gpu); + normalize_delta_gpu(l.x_gpu, l.mean_gpu, l.variance_gpu, l.mean_delta_gpu, l.variance_delta_gpu, l.batch, l.out_c, l.out_w*l.out_h, l.delta_gpu); +#endif + if(l.type == BATCHNORM) copy_gpu(l.outputs*l.batch, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/batchnorm_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/batchnorm_layer.h" new file mode 100644 index 00000000..25a18a3c --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/batchnorm_layer.h" @@ -0,0 +1,19 @@ +#ifndef BATCHNORM_LAYER_H +#define BATCHNORM_LAYER_H + +#include "image.h" +#include "layer.h" +#include "network.h" + +layer make_batchnorm_layer(int batch, int w, int h, int c); +void forward_batchnorm_layer(layer l, network net); +void backward_batchnorm_layer(layer l, network net); + +#ifdef GPU +void forward_batchnorm_layer_gpu(layer l, network net); +void backward_batchnorm_layer_gpu(layer l, network net); +void pull_batchnorm_layer(layer l); +void push_batchnorm_layer(layer l); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas.c" new file mode 100644 index 00000000..9e160444 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas.c" @@ -0,0 +1,351 @@ +#include "blas.h" + +#include +#include +#include +#include +#include +#include +void reorg_cpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out) +{ + int b,i,j,k; + int out_c = c/(stride*stride); + + for(b = 0; b < batch; ++b){ + for(k = 0; k < c; ++k){ + for(j = 0; j < h; ++j){ + for(i = 0; i < w; ++i){ + int in_index = i + w*(j + h*(k + c*b)); + int c2 = k % out_c; + int offset = k / out_c; + int w2 = i*stride + offset % stride; + int h2 = j*stride + offset / stride; + int out_index = w2 + w*stride*(h2 + h*stride*(c2 + out_c*b)); + if(forward) out[out_index] = x[in_index]; + else out[in_index] = x[out_index]; + } + } + } + } +} + +void flatten(float *x, int size, int layers, int batch, int forward) +{ + float *swap = calloc(size*layers*batch, sizeof(float)); + int i,c,b; + for(b = 0; b < batch; ++b){ + for(c = 0; c < layers; ++c){ + for(i = 0; i < size; ++i){ + int i1 = b*layers*size + c*size + i; + int i2 = b*layers*size + i*layers + c; + if (forward) swap[i2] = x[i1]; + else swap[i1] = x[i2]; + } + } + } + memcpy(x, swap, size*layers*batch*sizeof(float)); + free(swap); +} + +void weighted_sum_cpu(float *a, float *b, float *s, int n, float *c) +{ + int i; + for(i = 0; i < n; ++i){ + c[i] = s[i]*a[i] + (1-s[i])*(b ? b[i] : 0); + } +} + +void weighted_delta_cpu(float *a, float *b, float *s, float *da, float *db, float *ds, int n, float *dc) +{ + int i; + for(i = 0; i < n; ++i){ + if(da) da[i] += dc[i] * s[i]; + if(db) db[i] += dc[i] * (1-s[i]); + ds[i] += dc[i] * (a[i] - b[i]); + } +} + +void shortcut_cpu(int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out) +{ + int stride = w1/w2; + int sample = w2/w1; + assert(stride == h1/h2); + assert(sample == h2/h1); + if(stride < 1) stride = 1; + if(sample < 1) sample = 1; + int minw = (w1 < w2) ? w1 : w2; + int minh = (h1 < h2) ? h1 : h2; + int minc = (c1 < c2) ? c1 : c2; + + int i,j,k,b; + for(b = 0; b < batch; ++b){ + for(k = 0; k < minc; ++k){ + for(j = 0; j < minh; ++j){ + for(i = 0; i < minw; ++i){ + int out_index = i*sample + w2*(j*sample + h2*(k + c2*b)); + int add_index = i*stride + w1*(j*stride + h1*(k + c1*b)); + out[out_index] = s1*out[out_index] + s2*add[add_index]; + } + } + } + } +} + +void mean_cpu(float *x, int batch, int filters, int spatial, float *mean) +{ + float scale = 1./(batch * spatial); + int i,j,k; + for(i = 0; i < filters; ++i){ + mean[i] = 0; + for(j = 0; j < batch; ++j){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + i*spatial + k; + mean[i] += x[index]; + } + } + mean[i] *= scale; + } +} + +void variance_cpu(float *x, float *mean, int batch, int filters, int spatial, float *variance) +{ + float scale = 1./(batch * spatial - 1); + int i,j,k; + for(i = 0; i < filters; ++i){ + variance[i] = 0; + for(j = 0; j < batch; ++j){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + i*spatial + k; + variance[i] += pow((x[index] - mean[i]), 2); + } + } + variance[i] *= scale; + } +} + +void l2normalize_cpu(float *x, float *dx, int batch, int filters, int spatial) +{ + int b,f,i; + for(b = 0; b < batch; ++b){ + for(i = 0; i < spatial; ++i){ + float sum = 0; + for(f = 0; f < filters; ++f){ + int index = b*filters*spatial + f*spatial + i; + sum += powf(x[index], 2); + } + sum = sqrtf(sum); + for(f = 0; f < filters; ++f){ + int index = b*filters*spatial + f*spatial + i; + x[index] /= sum; + dx[index] = (1 - x[index]) / sum; + } + } + } +} + + +void normalize_cpu(float *x, float *mean, float *variance, int batch, int filters, int spatial) +{ + int b, f, i; + for(b = 0; b < batch; ++b){ + for(f = 0; f < filters; ++f){ + for(i = 0; i < spatial; ++i){ + int index = b*filters*spatial + f*spatial + i; + x[index] = (x[index] - mean[f])/(sqrt(variance[f]) + .000001f); + } + } + } +} + +void const_cpu(int N, float ALPHA, float *X, int INCX) +{ + int i; + for(i = 0; i < N; ++i) X[i*INCX] = ALPHA; +} + +void mul_cpu(int N, float *X, int INCX, float *Y, int INCY) +{ + int i; + for(i = 0; i < N; ++i) Y[i*INCY] *= X[i*INCX]; +} + +void pow_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY) +{ + int i; + for(i = 0; i < N; ++i) Y[i*INCY] = pow(X[i*INCX], ALPHA); +} + +void axpy_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY) +{ + int i; + for(i = 0; i < N; ++i) Y[i*INCY] += ALPHA*X[i*INCX]; +} + +void scal_cpu(int N, float ALPHA, float *X, int INCX) +{ + int i; + for(i = 0; i < N; ++i) X[i*INCX] *= ALPHA; +} + +void fill_cpu(int N, float ALPHA, float *X, int INCX) +{ + int i; + for(i = 0; i < N; ++i) X[i*INCX] = ALPHA; +} + +void deinter_cpu(int NX, float *X, int NY, float *Y, int B, float *OUT) +{ + int i, j; + int index = 0; + for(j = 0; j < B; ++j) { + for(i = 0; i < NX; ++i){ + if(X) X[j*NX + i] += OUT[index]; + ++index; + } + for(i = 0; i < NY; ++i){ + if(Y) Y[j*NY + i] += OUT[index]; + ++index; + } + } +} + +void inter_cpu(int NX, float *X, int NY, float *Y, int B, float *OUT) +{ + int i, j; + int index = 0; + for(j = 0; j < B; ++j) { + for(i = 0; i < NX; ++i){ + OUT[index++] = X[j*NX + i]; + } + for(i = 0; i < NY; ++i){ + OUT[index++] = Y[j*NY + i]; + } + } +} + +void copy_cpu(int N, float *X, int INCX, float *Y, int INCY) +{ + int i; + for(i = 0; i < N; ++i) Y[i*INCY] = X[i*INCX]; +} + +void mult_add_into_cpu(int N, float *X, float *Y, float *Z) +{ + int i; + for(i = 0; i < N; ++i) Z[i] += X[i]*Y[i]; +} + +void smooth_l1_cpu(int n, float *pred, float *truth, float *delta, float *error) +{ + int i; + for(i = 0; i < n; ++i){ + float diff = truth[i] - pred[i]; + float abs_val = fabs(diff); + if(abs_val < 1) { + error[i] = diff * diff; + delta[i] = diff; + } + else { + error[i] = 2*abs_val - 1; + delta[i] = (diff < 0) ? 1 : -1; + } + } +} + +void l1_cpu(int n, float *pred, float *truth, float *delta, float *error) +{ + int i; + for(i = 0; i < n; ++i){ + float diff = truth[i] - pred[i]; + error[i] = fabs(diff); + delta[i] = diff > 0 ? 1 : -1; + } +} + +void softmax_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error) +{ + int i; + for(i = 0; i < n; ++i){ + float t = truth[i]; + float p = pred[i]; + error[i] = (t) ? -log(p) : 0; + delta[i] = t-p; + } +} + +void logistic_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error) +{ + int i; + for(i = 0; i < n; ++i){ + float t = truth[i]; + float p = pred[i]; + error[i] = -t*log(p) - (1-t)*log(1-p); + delta[i] = t-p; + } +} + +void l2_cpu(int n, float *pred, float *truth, float *delta, float *error) +{ + int i; + for(i = 0; i < n; ++i){ + float diff = truth[i] - pred[i]; + error[i] = diff * diff; + delta[i] = diff; + } +} + +float dot_cpu(int N, float *X, int INCX, float *Y, int INCY) +{ + int i; + float dot = 0; + for(i = 0; i < N; ++i) dot += X[i*INCX] * Y[i*INCY]; + return dot; +} + +void softmax(float *input, int n, float temp, int stride, float *output) +{ + int i; + float sum = 0; + float largest = -FLT_MAX; + for(i = 0; i < n; ++i){ + if(input[i*stride] > largest) largest = input[i*stride]; + } + for(i = 0; i < n; ++i){ + float e = exp(input[i*stride]/temp - largest/temp); + sum += e; + output[i*stride] = e; + } + for(i = 0; i < n; ++i){ + output[i*stride] /= sum; + } +} + + +void softmax_cpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output) +{ + int g, b; + for(b = 0; b < batch; ++b){ + for(g = 0; g < groups; ++g){ + softmax(input + b*batch_offset + g*group_offset, n, temp, stride, output + b*batch_offset + g*group_offset); + } + } +} + +void upsample_cpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out) +{ + int i, j, k, b; + for(b = 0; b < batch; ++b){ + for(k = 0; k < c; ++k){ + for(j = 0; j < h*stride; ++j){ + for(i = 0; i < w*stride; ++i){ + int in_index = b*w*h*c + k*w*h + (j/stride)*w + i/stride; + int out_index = b*w*h*c*stride*stride + k*w*h*stride*stride + j*w*stride + i; + if(forward) out[out_index] = scale*in[in_index]; + else in[in_index] += scale*out[out_index]; + } + } + } + } +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas.h" new file mode 100644 index 00000000..707291de --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas.h" @@ -0,0 +1,105 @@ +#ifndef BLAS_H +#define BLAS_H +#include "darknet.h" + +void flatten(float *x, int size, int layers, int batch, int forward); +void pm(int M, int N, float *A); +float *random_matrix(int rows, int cols); +void time_random_matrix(int TA, int TB, int m, int k, int n); +void reorg_cpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out); + +void test_blas(); + +void inter_cpu(int NX, float *X, int NY, float *Y, int B, float *OUT); +void deinter_cpu(int NX, float *X, int NY, float *Y, int B, float *OUT); +void mult_add_into_cpu(int N, float *X, float *Y, float *Z); + +void const_cpu(int N, float ALPHA, float *X, int INCX); +void constrain_gpu(int N, float ALPHA, float * X, int INCX); +void pow_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY); +void mul_cpu(int N, float *X, int INCX, float *Y, int INCY); + +int test_gpu_blas(); +void shortcut_cpu(int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out); + +void mean_cpu(float *x, int batch, int filters, int spatial, float *mean); +void variance_cpu(float *x, float *mean, int batch, int filters, int spatial, float *variance); + +void scale_bias(float *output, float *scales, int batch, int n, int size); +void backward_scale_cpu(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates); +void mean_delta_cpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta); +void variance_delta_cpu(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta); +void normalize_delta_cpu(float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta); +void l2normalize_cpu(float *x, float *dx, int batch, int filters, int spatial); + +void smooth_l1_cpu(int n, float *pred, float *truth, float *delta, float *error); +void l2_cpu(int n, float *pred, float *truth, float *delta, float *error); +void l1_cpu(int n, float *pred, float *truth, float *delta, float *error); +void logistic_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error); +void softmax_x_ent_cpu(int n, float *pred, float *truth, float *delta, float *error); +void weighted_sum_cpu(float *a, float *b, float *s, int num, float *c); +void weighted_delta_cpu(float *a, float *b, float *s, float *da, float *db, float *ds, int n, float *dc); + +void softmax(float *input, int n, float temp, int stride, float *output); +void softmax_cpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output); +void upsample_cpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out); + +#ifdef GPU +#include "cuda.h" +#include "tree.h" + +void axpy_gpu(int N, float ALPHA, float * X, int INCX, float * Y, int INCY); +void axpy_gpu_offset(int N, float ALPHA, float * X, int OFFX, int INCX, float * Y, int OFFY, int INCY); +void copy_gpu(int N, float * X, int INCX, float * Y, int INCY); +void copy_gpu_offset(int N, float * X, int OFFX, int INCX, float * Y, int OFFY, int INCY); +void add_gpu(int N, float ALPHA, float * X, int INCX); +void supp_gpu(int N, float ALPHA, float * X, int INCX); +void mask_gpu(int N, float * X, float mask_num, float * mask, float val); +void scale_mask_gpu(int N, float * X, float mask_num, float * mask, float scale); +void const_gpu(int N, float ALPHA, float *X, int INCX); +void pow_gpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY); +void mul_gpu(int N, float *X, int INCX, float *Y, int INCY); + +void mean_gpu(float *x, int batch, int filters, int spatial, float *mean); +void variance_gpu(float *x, float *mean, int batch, int filters, int spatial, float *variance); +void normalize_gpu(float *x, float *mean, float *variance, int batch, int filters, int spatial); +void l2normalize_gpu(float *x, float *dx, int batch, int filters, int spatial); + +void normalize_delta_gpu(float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta); + +void fast_mean_delta_gpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta); +void fast_variance_delta_gpu(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta); + +void fast_variance_gpu(float *x, float *mean, int batch, int filters, int spatial, float *variance); +void fast_mean_gpu(float *x, int batch, int filters, int spatial, float *mean); +void shortcut_gpu(int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out); +void scale_bias_gpu(float *output, float *biases, int batch, int n, int size); +void backward_scale_gpu(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates); +void scale_bias_gpu(float *output, float *biases, int batch, int n, int size); +void add_bias_gpu(float *output, float *biases, int batch, int n, int size); +void backward_bias_gpu(float *bias_updates, float *delta, int batch, int n, int size); + +void logistic_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error); +void softmax_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error); +void smooth_l1_gpu(int n, float *pred, float *truth, float *delta, float *error); +void l2_gpu(int n, float *pred, float *truth, float *delta, float *error); +void l1_gpu(int n, float *pred, float *truth, float *delta, float *error); +void wgan_gpu(int n, float *pred, float *truth, float *delta, float *error); +void weighted_delta_gpu(float *a, float *b, float *s, float *da, float *db, float *ds, int num, float *dc); +void weighted_sum_gpu(float *a, float *b, float *s, int num, float *c); +void mult_add_into_gpu(int num, float *a, float *b, float *c); +void inter_gpu(int NX, float *X, int NY, float *Y, int B, float *OUT); +void deinter_gpu(int NX, float *X, int NY, float *Y, int B, float *OUT); + +void reorg_gpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out); + +void softmax_gpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output); +void adam_update_gpu(float *w, float *d, float *m, float *v, float B1, float B2, float eps, float decay, float rate, int n, int batch, int t); +void adam_gpu(int n, float *x, float *m, float *v, float B1, float B2, float rate, float eps, int t); + +void flatten_gpu(float *x, int spatial, int layers, int batch, int forward, float *out); +void softmax_tree(float *input, int spatial, int batch, int stride, float temp, float *output, tree hier); +void upsample_gpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out); + +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas_kernels.cu" new file mode 100644 index 00000000..47e82179 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/blas_kernels.cu" @@ -0,0 +1,1035 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" +#include + +extern "C" { +#include "blas.h" +#include "cuda.h" +#include "utils.h" +} + +__global__ void scale_bias_kernel(float *output, float *biases, int n, int size) +{ + int offset = blockIdx.x * blockDim.x + threadIdx.x; + int filter = blockIdx.y; + int batch = blockIdx.z; + + if(offset < size) output[(batch*n+filter)*size + offset] *= biases[filter]; +} + +void scale_bias_gpu(float *output, float *biases, int batch, int n, int size) +{ + dim3 dimGrid((size-1)/BLOCK + 1, n, batch); + dim3 dimBlock(BLOCK, 1, 1); + + scale_bias_kernel<<>>(output, biases, n, size); + check_error(cudaPeekAtLastError()); +} + +__global__ void backward_scale_kernel(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates) +{ + __shared__ float part[BLOCK]; + int i,b; + int filter = blockIdx.x; + int p = threadIdx.x; + float sum = 0; + for(b = 0; b < batch; ++b){ + for(i = 0; i < size; i += BLOCK){ + int index = p + i + size*(filter + n*b); + sum += (p+i < size) ? delta[index]*x_norm[index] : 0; + } + } + part[p] = sum; + __syncthreads(); + if (p == 0) { + for(i = 0; i < BLOCK; ++i) scale_updates[filter] += part[i]; + } +} + +void backward_scale_gpu(float *x_norm, float *delta, int batch, int n, int size, float *scale_updates) +{ + backward_scale_kernel<<>>(x_norm, delta, batch, n, size, scale_updates); + check_error(cudaPeekAtLastError()); +} + +__global__ void add_bias_kernel(float *output, float *biases, int batch, int n, int size) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (index >= n*size*batch) return; + int i = index % size; + index /= size; + int j = index % n; + index /= n; + int k = index; + + output[(k*n+j)*size + i] += biases[j]; +} + +void add_bias_gpu(float *output, float *biases, int batch, int n, int size) +{ + int num = n*size*batch; + + add_bias_kernel<<>>(output, biases, batch, n, size); + check_error(cudaPeekAtLastError()); +} + +__global__ void backward_bias_conn_kernel(float *bias_updates, float *delta, int batch, int n) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (index >= n) return; + int b; + float sum = 0; + for(b = 0; b < batch; ++b){ + int i = b*n + index; + sum += delta[i]; + } + bias_updates[index] += sum; +} + +__global__ void backward_bias_kernel(float *bias_updates, float *delta, int batch, int n, int size) +{ + __shared__ float part[BLOCK]; + int i,b; + int filter = blockIdx.x; + int p = threadIdx.x; + float sum = 0; + for(b = 0; b < batch; ++b){ + for(i = 0; i < size; i += BLOCK){ + int index = p + i + size*(filter + n*b); + sum += (p+i < size) ? delta[index] : 0; + } + } + part[p] = sum; + __syncthreads(); + if (p == 0) { + for(i = 0; i < BLOCK; ++i) bias_updates[filter] += part[i]; + } +} + +void backward_bias_gpu(float *bias_updates, float *delta, int batch, int n, int size) +{ + if(size == 1){ + backward_bias_conn_kernel<<>>(bias_updates, delta, batch, n); + }else{ + backward_bias_kernel<<>>(bias_updates, delta, batch, n, size); + } + check_error(cudaPeekAtLastError()); +} + +/* +__global__ void dot_kernel(float *output, float scale, int batch, int n, int size, float *delta) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + int f1 = index / n; + int f2 = index % n; + if (f2 <= f1) return; + + float sum = 0; + float norm1 = 0; + float norm2 = 0; + int b, i; + for(b = 0; b < batch; ++b){ + for(i = 0; i < size; ++i){ + int i1 = b * size * n + f1 * size + i; + int i2 = b * size * n + f2 * size + i; + sum += output[i1] * output[i2]; + norm1 += output[i1] * output[i1]; + norm2 += output[i2] * output[i2]; + } + } + norm1 = sqrt(norm1); + norm2 = sqrt(norm2); + float norm = norm1 * norm2; + sum = sum / norm; + for(b = 0; b < batch; ++b){ + for(i = 0; i < size; ++i){ + int i1 = b * size * n + f1 * size + i; + int i2 = b * size * n + f2 * size + i; + delta[i1] += - scale * sum * output[i2] / norm; + delta[i2] += - scale * sum * output[i1] / norm; + } + } +} + +void dot_error_gpu(layer l) +{ + dot_kernel<<>>(l.output_gpu, l.dot, l.batch, l.n, l.out_w * l.out_h, l.delta_gpu); + check_error(cudaPeekAtLastError()); +} +*/ + + +__global__ void adam_kernel(int N, float *x, float *m, float *v, float B1, float B2, float rate, float eps, int t) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (index >= N) return; + + float mhat = m[index] / (1.f - powf(B1, t)); + float vhat = v[index] / (1.f - powf(B2, t)); + + x[index] = x[index] + rate * mhat / (sqrtf(vhat) + eps); +} + +extern "C" void adam_gpu(int n, float *x, float *m, float *v, float B1, float B2, float rate, float eps, int t) +{ + adam_kernel<<>>(n, x, m, v, B1, B2, rate, eps, t); + check_error(cudaPeekAtLastError()); +} + +extern "C" void adam_update_gpu(float *w, float *d, float *m, float *v, float B1, float B2, float eps, float decay, float rate, int n, int batch, int t) +{ + scal_gpu(n, B1, m, 1); + scal_gpu(n, B2, v, 1); + axpy_gpu(n, -decay*batch, w, 1, d, 1); + + axpy_gpu(n, (1-B1), d, 1, m, 1); + mul_gpu(n, d, 1, d, 1); + axpy_gpu(n, (1-B2), d, 1, v, 1); + + adam_gpu(n, w, m, v, B1, B2, rate, eps, t); + fill_gpu(n, 0, d, 1); +} + +__global__ void normalize_kernel(int N, float *x, float *mean, float *variance, int batch, int filters, int spatial) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (index >= N) return; + int f = (index/spatial)%filters; + + x[index] = (x[index] - mean[f])/(sqrtf(variance[f] + .00001f)); +} + +__global__ void normalize_delta_kernel(int N, float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (index >= N) return; + int f = (index/spatial)%filters; + + delta[index] = delta[index] * 1.f/(sqrtf(variance[f] + .00001f)) + variance_delta[f] * 2.f * (x[index] - mean[f]) / (spatial * batch) + mean_delta[f]/(spatial*batch); +} + +extern "C" void normalize_delta_gpu(float *x, float *mean, float *variance, float *mean_delta, float *variance_delta, int batch, int filters, int spatial, float *delta) +{ + size_t N = batch*filters*spatial; + normalize_delta_kernel<<>>(N, x, mean, variance, mean_delta, variance_delta, batch, filters, spatial, delta); + check_error(cudaPeekAtLastError()); +} + +__global__ void variance_delta_kernel(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (i >= filters) return; + int j,k; + variance_delta[i] = 0; + for(j = 0; j < batch; ++j){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + i*spatial + k; + variance_delta[i] += delta[index]*(x[index] - mean[i]); + } + } + variance_delta[i] *= -.5f * powf(variance[i] + .00001f, (float)(-3.f/2.f)); +} + +__global__ void accumulate_kernel(float *x, int n, int groups, float *sum) +{ + int k; + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (i >= groups) return; + sum[i] = 0; + for(k = 0; k < n; ++k){ + sum[i] += x[k*groups + i]; + } +} + +__global__ void fast_mean_delta_kernel(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta) +{ + const int threads = BLOCK; + __shared__ float local[threads]; + + int id = threadIdx.x; + local[id] = 0; + + int filter = blockIdx.x; + + int i, j; + for(j = 0; j < batch; ++j){ + for(i = 0; i < spatial; i += threads){ + int index = j*spatial*filters + filter*spatial + i + id; + local[id] += (i+id < spatial) ? delta[index] : 0; + } + } + + __syncthreads(); + + if(id == 0){ + mean_delta[filter] = 0; + for(i = 0; i < threads; ++i){ + mean_delta[filter] += local[i]; + } + mean_delta[filter] *= (-1.f/sqrtf(variance[filter] + .00001f)); + } +} + +__global__ void fast_variance_delta_kernel(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta) +{ + const int threads = BLOCK; + __shared__ float local[threads]; + + int id = threadIdx.x; + local[id] = 0; + + int filter = blockIdx.x; + + int i, j; + for(j = 0; j < batch; ++j){ + for(i = 0; i < spatial; i += threads){ + int index = j*spatial*filters + filter*spatial + i + id; + + local[id] += (i+id < spatial) ? delta[index]*(x[index] - mean[filter]) : 0; + } + } + + __syncthreads(); + + if(id == 0){ + variance_delta[filter] = 0; + for(i = 0; i < threads; ++i){ + variance_delta[filter] += local[i]; + } + variance_delta[filter] *= -.5f * powf(variance[filter] + .00001f, (float)(-3.f/2.f)); + } +} + + +__global__ void mean_delta_kernel(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (i >= filters) return; + int j,k; + mean_delta[i] = 0; + for (j = 0; j < batch; ++j) { + for (k = 0; k < spatial; ++k) { + int index = j*filters*spatial + i*spatial + k; + mean_delta[i] += delta[index]; + } + } + mean_delta[i] *= (-1.f/sqrtf(variance[i] + .00001f)); +} + +extern "C" void mean_delta_gpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta) +{ + mean_delta_kernel<<>>(delta, variance, batch, filters, spatial, mean_delta); + check_error(cudaPeekAtLastError()); +} + +extern "C" void fast_mean_delta_gpu(float *delta, float *variance, int batch, int filters, int spatial, float *mean_delta) +{ + fast_mean_delta_kernel<<>>(delta, variance, batch, filters, spatial, mean_delta); + check_error(cudaPeekAtLastError()); +} + +extern "C" void fast_variance_delta_gpu(float *x, float *delta, float *mean, float *variance, int batch, int filters, int spatial, float *variance_delta) +{ + fast_variance_delta_kernel<<>>(x, delta, mean, variance, batch, filters, spatial, variance_delta); + check_error(cudaPeekAtLastError()); +} + +__global__ void mean_kernel(float *x, int batch, int filters, int spatial, float *mean) +{ + float scale = 1.f/(batch * spatial); + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (i >= filters) return; + int j,k; + mean[i] = 0; + for(j = 0; j < batch; ++j){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + i*spatial + k; + mean[i] += x[index]; + } + } + mean[i] *= scale; +} + +__global__ void variance_kernel(float *x, float *mean, int batch, int filters, int spatial, float *variance) +{ + float scale = 1.f/(batch * spatial - 1); + int j,k; + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (i >= filters) return; + variance[i] = 0; + for(j = 0; j < batch; ++j){ + for(k = 0; k < spatial; ++k){ + int index = j*filters*spatial + i*spatial + k; + variance[i] += powf((x[index] - mean[i]), 2); + } + } + variance[i] *= scale; +} + +__global__ void reorg_kernel(int N, float *x, int w, int h, int c, int batch, int stride, int forward, float *out) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i >= N) return; + int in_index = i; + int in_w = i%w; + i = i/w; + int in_h = i%h; + i = i/h; + int in_c = i%c; + i = i/c; + int b = i%batch; + + int out_c = c/(stride*stride); + + int c2 = in_c % out_c; + int offset = in_c / out_c; + int w2 = in_w*stride + offset % stride; + int h2 = in_h*stride + offset / stride; + //printf("%d\n", offset); + int out_index = w2 + w*stride*(h2 + h*stride*(c2 + out_c*b)); + + // printf("%d %d %d\n", w2, h2, c2); + //printf("%d %d\n", in_index, out_index); + //if(out_index >= N || out_index < 0) printf("bad bad bad \n"); + + if(forward) out[out_index] = x[in_index]; + else out[in_index] = x[out_index]; + //if(forward) out[1] = x[1]; + //else out[0] = x[0]; +} + +__global__ void axpy_kernel(int N, float ALPHA, float *X, int OFFX, int INCX, float *Y, int OFFY, int INCY) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) Y[OFFY+i*INCY] += ALPHA*X[OFFX+i*INCX]; +} + +__global__ void pow_kernel(int N, float ALPHA, float *X, int INCX, float *Y, int INCY) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) Y[i*INCY] = pow(X[i*INCX], ALPHA); +} + +__global__ void const_kernel(int N, float ALPHA, float *X, int INCX) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) X[i*INCX] = ALPHA; +} + +__global__ void constrain_kernel(int N, float ALPHA, float *X, int INCX) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) X[i*INCX] = fminf(ALPHA, fmaxf(-ALPHA, X[i*INCX])); +} + +__global__ void supp_kernel(int N, float ALPHA, float *X, int INCX) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) { + if((X[i*INCX] * X[i*INCX]) < (ALPHA * ALPHA)) X[i*INCX] = 0; + } +} + +__global__ void add_kernel(int N, float ALPHA, float *X, int INCX) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) X[i*INCX] += ALPHA; +} + +__global__ void scal_kernel(int N, float ALPHA, float *X, int INCX) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) X[i*INCX] *= ALPHA; +} + +__global__ void fill_kernel(int N, float ALPHA, float *X, int INCX) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) X[i*INCX] = ALPHA; +} + +__global__ void copy_kernel(int N, float *X, int OFFX, int INCX, float *Y, int OFFY, int INCY) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) Y[i*INCY + OFFY] = X[i*INCX + OFFX]; +} + +__global__ void mul_kernel(int N, float *X, int INCX, float *Y, int INCY) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < N) Y[i*INCY] *= X[i*INCX]; +} + + +extern "C" void normalize_gpu(float *x, float *mean, float *variance, int batch, int filters, int spatial) +{ + size_t N = batch*filters*spatial; + normalize_kernel<<>>(N, x, mean, variance, batch, filters, spatial); + check_error(cudaPeekAtLastError()); +} + +__global__ void l2norm_kernel(int N, float *x, float *dx, int batch, int filters, int spatial) +{ + int index = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (index >= N) return; + int b = index / spatial; + int i = index % spatial; + int f; + float sum = 0; + for(f = 0; f < filters; ++f){ + int index = b*filters*spatial + f*spatial + i; + sum += powf(x[index], 2); + } + sum = sqrtf(sum); + if(sum == 0) sum = 1; + //printf("%f\n", sum); + for(f = 0; f < filters; ++f){ + int index = b*filters*spatial + f*spatial + i; + x[index] /= sum; + dx[index] = (1 - x[index]) / sum; + } +} + +extern "C" void l2normalize_gpu(float *x, float *dx, int batch, int filters, int spatial) +{ + size_t N = batch*spatial; + l2norm_kernel<<>>(N, x, dx, batch, filters, spatial); + check_error(cudaPeekAtLastError()); +} + +__global__ void fast_mean_kernel(float *x, int batch, int filters, int spatial, float *mean) +{ + const int threads = BLOCK; + __shared__ float local[threads]; + + int id = threadIdx.x; + local[id] = 0; + + int filter = blockIdx.x; + + int i, j; + for(j = 0; j < batch; ++j){ + for(i = 0; i < spatial; i += threads){ + int index = j*spatial*filters + filter*spatial + i + id; + local[id] += (i+id < spatial) ? x[index] : 0; + } + } + + __syncthreads(); + + if(id == 0){ + mean[filter] = 0; + for(i = 0; i < threads; ++i){ + mean[filter] += local[i]; + } + mean[filter] /= spatial * batch; + } +} + +__global__ void fast_variance_kernel(float *x, float *mean, int batch, int filters, int spatial, float *variance) +{ + const int threads = BLOCK; + __shared__ float local[threads]; + + int id = threadIdx.x; + local[id] = 0; + + int filter = blockIdx.x; + + int i, j; + for(j = 0; j < batch; ++j){ + for(i = 0; i < spatial; i += threads){ + int index = j*spatial*filters + filter*spatial + i + id; + + local[id] += (i+id < spatial) ? powf((x[index] - mean[filter]), 2) : 0; + } + } + + __syncthreads(); + + if(id == 0){ + variance[filter] = 0; + for(i = 0; i < threads; ++i){ + variance[filter] += local[i]; + } + variance[filter] /= (spatial * batch - 1); + } +} + +extern "C" void fast_mean_gpu(float *x, int batch, int filters, int spatial, float *mean) +{ + fast_mean_kernel<<>>(x, batch, filters, spatial, mean); + check_error(cudaPeekAtLastError()); +} + +extern "C" void fast_variance_gpu(float *x, float *mean, int batch, int filters, int spatial, float *variance) +{ + fast_variance_kernel<<>>(x, mean, batch, filters, spatial, variance); + check_error(cudaPeekAtLastError()); +} + + +extern "C" void mean_gpu(float *x, int batch, int filters, int spatial, float *mean) +{ + mean_kernel<<>>(x, batch, filters, spatial, mean); + check_error(cudaPeekAtLastError()); +} + +extern "C" void variance_gpu(float *x, float *mean, int batch, int filters, int spatial, float *variance) +{ + variance_kernel<<>>(x, mean, batch, filters, spatial, variance); + check_error(cudaPeekAtLastError()); +} + +extern "C" void axpy_gpu(int N, float ALPHA, float * X, int INCX, float * Y, int INCY) +{ + axpy_gpu_offset(N, ALPHA, X, 0, INCX, Y, 0, INCY); +} + +extern "C" void pow_gpu(int N, float ALPHA, float * X, int INCX, float * Y, int INCY) +{ + pow_kernel<<>>(N, ALPHA, X, INCX, Y, INCY); + check_error(cudaPeekAtLastError()); +} + +extern "C" void axpy_gpu_offset(int N, float ALPHA, float * X, int OFFX, int INCX, float * Y, int OFFY, int INCY) +{ + axpy_kernel<<>>(N, ALPHA, X, OFFX, INCX, Y, OFFY, INCY); + check_error(cudaPeekAtLastError()); +} + +extern "C" void copy_gpu(int N, float * X, int INCX, float * Y, int INCY) +{ + copy_gpu_offset(N, X, 0, INCX, Y, 0, INCY); +} + +extern "C" void mul_gpu(int N, float * X, int INCX, float * Y, int INCY) +{ + mul_kernel<<>>(N, X, INCX, Y, INCY); + check_error(cudaPeekAtLastError()); +} + +extern "C" void copy_gpu_offset(int N, float * X, int OFFX, int INCX, float * Y, int OFFY, int INCY) +{ + copy_kernel<<>>(N, X, OFFX, INCX, Y, OFFY, INCY); + check_error(cudaPeekAtLastError()); +} + +__global__ void flatten_kernel(int N, float *x, int spatial, int layers, int batch, int forward, float *out) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i >= N) return; + int in_s = i%spatial; + i = i/spatial; + int in_c = i%layers; + i = i/layers; + int b = i; + + int i1 = b*layers*spatial + in_c*spatial + in_s; + int i2 = b*layers*spatial + in_s*layers + in_c; + + if (forward) out[i2] = x[i1]; + else out[i1] = x[i2]; +} + +extern "C" void flatten_gpu(float *x, int spatial, int layers, int batch, int forward, float *out) +{ + int size = spatial*batch*layers; + flatten_kernel<<>>(size, x, spatial, layers, batch, forward, out); + check_error(cudaPeekAtLastError()); +} + +extern "C" void reorg_gpu(float *x, int w, int h, int c, int batch, int stride, int forward, float *out) +{ + int size = w*h*c*batch; + reorg_kernel<<>>(size, x, w, h, c, batch, stride, forward, out); + check_error(cudaPeekAtLastError()); +} + +__global__ void mask_kernel(int n, float *x, float mask_num, float *mask, float val) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n && mask[i] == mask_num) x[i] = val; +} + +extern "C" void mask_gpu(int N, float * X, float mask_num, float * mask, float val) +{ + mask_kernel<<>>(N, X, mask_num, mask, val); + check_error(cudaPeekAtLastError()); +} + +__global__ void scale_mask_kernel(int n, float *x, float mask_num, float *mask, float scale) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n && mask[i] == mask_num) x[i] *= scale; +} + +extern "C" void scale_mask_gpu(int N, float * X, float mask_num, float * mask, float scale) +{ + scale_mask_kernel<<>>(N, X, mask_num, mask, scale); + check_error(cudaPeekAtLastError()); +} + +extern "C" void const_gpu(int N, float ALPHA, float * X, int INCX) +{ + const_kernel<<>>(N, ALPHA, X, INCX); + check_error(cudaPeekAtLastError()); +} + +extern "C" void constrain_gpu(int N, float ALPHA, float * X, int INCX) +{ + constrain_kernel<<>>(N, ALPHA, X, INCX); + check_error(cudaPeekAtLastError()); +} + + +extern "C" void add_gpu(int N, float ALPHA, float * X, int INCX) +{ + add_kernel<<>>(N, ALPHA, X, INCX); + check_error(cudaPeekAtLastError()); +} + +extern "C" void scal_gpu(int N, float ALPHA, float * X, int INCX) +{ + scal_kernel<<>>(N, ALPHA, X, INCX); + check_error(cudaPeekAtLastError()); +} + +extern "C" void supp_gpu(int N, float ALPHA, float * X, int INCX) +{ + supp_kernel<<>>(N, ALPHA, X, INCX); + check_error(cudaPeekAtLastError()); +} + +extern "C" void fill_gpu(int N, float ALPHA, float * X, int INCX) +{ + fill_kernel<<>>(N, ALPHA, X, INCX); + check_error(cudaPeekAtLastError()); +} + +__global__ void shortcut_kernel(int size, int minw, int minh, int minc, int stride, int sample, int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (id >= size) return; + int i = id % minw; + id /= minw; + int j = id % minh; + id /= minh; + int k = id % minc; + id /= minc; + int b = id % batch; + + int out_index = i*sample + w2*(j*sample + h2*(k + c2*b)); + int add_index = i*stride + w1*(j*stride + h1*(k + c1*b)); + out[out_index] = s1*out[out_index] + s2*add[add_index]; + //out[out_index] += add[add_index]; +} + +extern "C" void shortcut_gpu(int batch, int w1, int h1, int c1, float *add, int w2, int h2, int c2, float s1, float s2, float *out) +{ + int minw = (w1 < w2) ? w1 : w2; + int minh = (h1 < h2) ? h1 : h2; + int minc = (c1 < c2) ? c1 : c2; + + int stride = w1/w2; + int sample = w2/w1; + assert(stride == h1/h2); + assert(sample == h2/h1); + if(stride < 1) stride = 1; + if(sample < 1) sample = 1; + + int size = batch * minw * minh * minc; + shortcut_kernel<<>>(size, minw, minh, minc, stride, sample, batch, w1, h1, c1, add, w2, h2, c2, s1, s2, out); + check_error(cudaPeekAtLastError()); +} + +__global__ void smooth_l1_kernel(int n, float *pred, float *truth, float *delta, float *error) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + float diff = truth[i] - pred[i]; + float abs_val = fabsf(diff); + if(abs_val < 1) { + error[i] = diff * diff; + delta[i] = diff; + } + else { + error[i] = 2*abs_val - 1; + delta[i] = (diff > 0) ? 1 : -1; + } + } +} + +extern "C" void smooth_l1_gpu(int n, float *pred, float *truth, float *delta, float *error) +{ + smooth_l1_kernel<<>>(n, pred, truth, delta, error); + check_error(cudaPeekAtLastError()); +} + +__global__ void softmax_x_ent_kernel(int n, float *pred, float *truth, float *delta, float *error) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + float t = truth[i]; + float p = pred[i]; + error[i] = (t) ? -log(p) : 0; + delta[i] = t-p; + } +} + +extern "C" void softmax_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error) +{ + softmax_x_ent_kernel<<>>(n, pred, truth, delta, error); + check_error(cudaPeekAtLastError()); +} + +__global__ void logistic_x_ent_kernel(int n, float *pred, float *truth, float *delta, float *error) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + float t = truth[i]; + float p = pred[i]; + error[i] = -t*log(p+.0000001) - (1-t)*log(1-p+.0000001); + delta[i] = t-p; + } +} + +extern "C" void logistic_x_ent_gpu(int n, float *pred, float *truth, float *delta, float *error) +{ + logistic_x_ent_kernel<<>>(n, pred, truth, delta, error); + check_error(cudaPeekAtLastError()); +} + +__global__ void l2_kernel(int n, float *pred, float *truth, float *delta, float *error) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + float diff = truth[i] - pred[i]; + error[i] = diff * diff; //I know this is technically wrong, deal with it. + delta[i] = diff; + } +} + +extern "C" void l2_gpu(int n, float *pred, float *truth, float *delta, float *error) +{ + l2_kernel<<>>(n, pred, truth, delta, error); + check_error(cudaPeekAtLastError()); +} + +__global__ void l1_kernel(int n, float *pred, float *truth, float *delta, float *error) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + float diff = truth[i] - pred[i]; + error[i] = abs(diff); + delta[i] = (diff > 0) ? 1 : -1; + } +} + +extern "C" void l1_gpu(int n, float *pred, float *truth, float *delta, float *error) +{ + l1_kernel<<>>(n, pred, truth, delta, error); + check_error(cudaPeekAtLastError()); +} + +__global__ void wgan_kernel(int n, float *pred, float *truth, float *delta, float *error) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + error[i] = truth[i] ? -pred[i] : pred[i]; + delta[i] = (truth[i] > 0) ? 1 : -1; + } +} + +extern "C" void wgan_gpu(int n, float *pred, float *truth, float *delta, float *error) +{ + wgan_kernel<<>>(n, pred, truth, delta, error); + check_error(cudaPeekAtLastError()); +} + + + + +__global__ void weighted_sum_kernel(int n, float *a, float *b, float *s, float *c) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + c[i] = s[i]*a[i] + (1-s[i])*(b ? b[i] : 0); + } +} + +__global__ void deinter_kernel(int NX, float *X, int NY, float *Y, int B, float *OUT) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < (NX+NY)*B){ + int b = i / (NX+NY); + int j = i % (NX+NY); + if (j < NX){ + if(X) X[b*NX + j] += OUT[i]; + } else { + if(Y) Y[b*NY + j - NX] += OUT[i]; + } + } +} + +extern "C" void deinter_gpu(int NX, float *X, int NY, float *Y, int B, float *OUT) +{ + deinter_kernel<<>>(NX, X, NY, Y, B, OUT); + check_error(cudaPeekAtLastError()); +} + +__global__ void inter_kernel(int NX, float *X, int NY, float *Y, int B, float *OUT) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < (NX+NY)*B){ + int b = i / (NX+NY); + int j = i % (NX+NY); + if (j < NX){ + OUT[i] = X[b*NX + j]; + } else { + OUT[i] = Y[b*NY + j - NX]; + } + } +} + +extern "C" void inter_gpu(int NX, float *X, int NY, float *Y, int B, float *OUT) +{ + inter_kernel<<>>(NX, X, NY, Y, B, OUT); + check_error(cudaPeekAtLastError()); +} + +extern "C" void weighted_sum_gpu(float *a, float *b, float *s, int num, float *c) +{ + weighted_sum_kernel<<>>(num, a, b, s, c); + check_error(cudaPeekAtLastError()); +} + +__global__ void weighted_delta_kernel(int n, float *a, float *b, float *s, float *da, float *db, float *ds, float *dc) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + if(da) da[i] += dc[i] * s[i]; + if(db) db[i] += dc[i] * (1-s[i]); + ds[i] += dc[i] * (a[i] - b[i]); + } +} + +extern "C" void weighted_delta_gpu(float *a, float *b, float *s, float *da, float *db, float *ds, int num, float *dc) +{ + weighted_delta_kernel<<>>(num, a, b, s, da, db, ds, dc); + check_error(cudaPeekAtLastError()); +} + +__global__ void mult_add_into_kernel(int n, float *a, float *b, float *c) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i < n){ + c[i] += a[i]*b[i]; + } +} + +extern "C" void mult_add_into_gpu(int num, float *a, float *b, float *c) +{ + mult_add_into_kernel<<>>(num, a, b, c); + check_error(cudaPeekAtLastError()); +} + + +__device__ void softmax_device(float *input, int n, float temp, int stride, float *output) +{ + int i; + float sum = 0; + float largest = -INFINITY; + for(i = 0; i < n; ++i){ + int val = input[i*stride]; + largest = (val>largest) ? val : largest; + } + for(i = 0; i < n; ++i){ + float e = expf(input[i*stride]/temp - largest/temp); + sum += e; + output[i*stride] = e; + } + for(i = 0; i < n; ++i){ + output[i*stride] /= sum; + } +} + + +__global__ void softmax_tree_kernel(float *input, int spatial, int batch, int stride, float temp, float *output, int groups, int *group_size, int *group_offset) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (id >= spatial*batch*groups) return; + int s = id % spatial; + id = id / spatial; + int g = id % groups; + int b = id / groups; + int goff = group_offset[g]*spatial; + int boff = b*stride; + softmax_device(input + goff + boff + s, group_size[g], temp, spatial, output + goff + boff + s); +} + +extern "C" void softmax_tree(float *input, int spatial, int batch, int stride, float temp, float *output, tree hier) +{ + int *tree_groups_size = cuda_make_int_array(hier.group_size, hier.groups); + int *tree_groups_offset = cuda_make_int_array(hier.group_offset, hier.groups); + /* + static int *tree_groups_size = 0; + static int *tree_groups_offset = 0; + if(!tree_groups_size){ + tree_groups_size = cuda_make_int_array(hier.group_size, hier.groups); + tree_groups_offset = cuda_make_int_array(hier.group_offset, hier.groups); + } + */ + int num = spatial*batch*hier.groups; + softmax_tree_kernel<<>>(input, spatial, batch, stride, temp, output, hier.groups, tree_groups_size, tree_groups_offset); + check_error(cudaPeekAtLastError()); + cuda_free((float *)tree_groups_size); + cuda_free((float *)tree_groups_offset); +} + +__global__ void softmax_kernel(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (id >= batch*groups) return; + int b = id / groups; + int g = id % groups; + softmax_device(input + b*batch_offset + g*group_offset, n, temp, stride, output + b*batch_offset + g*group_offset); +} + +extern "C" void softmax_gpu(float *input, int n, int batch, int batch_offset, int groups, int group_offset, int stride, float temp, float *output) +{ + softmax_kernel<<>>(input, n, batch, batch_offset, groups, group_offset, stride, temp, output); + check_error(cudaPeekAtLastError()); +} + + +__global__ void upsample_kernel(size_t N, float *x, int w, int h, int c, int batch, int stride, int forward, float scale, float *out) +{ + size_t i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(i >= N) return; + int out_index = i; + int out_w = i%(w*stride); + i = i/(w*stride); + int out_h = i%(h*stride); + i = i/(h*stride); + int out_c = i%c; + i = i/c; + int b = i%batch; + + int in_w = out_w / stride; + int in_h = out_h / stride; + int in_c = out_c; + + int in_index = b*w*h*c + in_c*w*h + in_h*w + in_w; + + + if(forward) out[out_index] += scale * x[in_index]; + else atomicAdd(x+in_index, scale * out[out_index]); +} +extern "C" void upsample_gpu(float *in, int w, int h, int c, int batch, int stride, int forward, float scale, float *out) +{ + size_t size = w*h*c*batch*stride*stride; + upsample_kernel<<>>(size, in, w, h, c, batch, stride, forward, scale, out); + check_error(cudaPeekAtLastError()); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/box.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/box.c" new file mode 100644 index 00000000..8a1772c9 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/box.c" @@ -0,0 +1,357 @@ +#include "box.h" +#include +#include +#include + +int nms_comparator(const void *pa, const void *pb) +{ + detection a = *(detection *)pa; + detection b = *(detection *)pb; + float diff = 0; + if(b.sort_class >= 0){ + diff = a.prob[b.sort_class] - b.prob[b.sort_class]; + } else { + diff = a.objectness - b.objectness; + } + if(diff < 0) return 1; + else if(diff > 0) return -1; + return 0; +} + +void do_nms_obj(detection *dets, int total, int classes, float thresh) +{ + int i, j, k; + k = total-1; + for(i = 0; i <= k; ++i){ + if(dets[i].objectness == 0){ + detection swap = dets[i]; + dets[i] = dets[k]; + dets[k] = swap; + --k; + --i; + } + } + total = k+1; + + for(i = 0; i < total; ++i){ + dets[i].sort_class = -1; + } + + qsort(dets, total, sizeof(detection), nms_comparator); + for(i = 0; i < total; ++i){ + if(dets[i].objectness == 0) continue; + box a = dets[i].bbox; + for(j = i+1; j < total; ++j){ + if(dets[j].objectness == 0) continue; + box b = dets[j].bbox; + if (box_iou(a, b) > thresh){ + dets[j].objectness = 0; + for(k = 0; k < classes; ++k){ + dets[j].prob[k] = 0; + } + } + } + } +} + + +void do_nms_sort(detection *dets, int total, int classes, float thresh) +{ + int i, j, k; + k = total-1; + for(i = 0; i <= k; ++i){ + if(dets[i].objectness == 0){ + detection swap = dets[i]; + dets[i] = dets[k]; + dets[k] = swap; + --k; + --i; + } + } + total = k+1; + + for(k = 0; k < classes; ++k){ + for(i = 0; i < total; ++i){ + dets[i].sort_class = k; + } + qsort(dets, total, sizeof(detection), nms_comparator); + for(i = 0; i < total; ++i){ + if(dets[i].prob[k] == 0) continue; + box a = dets[i].bbox; + for(j = i+1; j < total; ++j){ + box b = dets[j].bbox; + if (box_iou(a, b) > thresh){ + dets[j].prob[k] = 0; + } + } + } + } +} + +box float_to_box(float *f, int stride) +{ + box b = {0}; + b.x = f[0]; + b.y = f[1*stride]; + b.w = f[2*stride]; + b.h = f[3*stride]; + return b; +} + +dbox derivative(box a, box b) +{ + dbox d; + d.dx = 0; + d.dw = 0; + float l1 = a.x - a.w/2; + float l2 = b.x - b.w/2; + if (l1 > l2){ + d.dx -= 1; + d.dw += .5; + } + float r1 = a.x + a.w/2; + float r2 = b.x + b.w/2; + if(r1 < r2){ + d.dx += 1; + d.dw += .5; + } + if (l1 > r2) { + d.dx = -1; + d.dw = 0; + } + if (r1 < l2){ + d.dx = 1; + d.dw = 0; + } + + d.dy = 0; + d.dh = 0; + float t1 = a.y - a.h/2; + float t2 = b.y - b.h/2; + if (t1 > t2){ + d.dy -= 1; + d.dh += .5; + } + float b1 = a.y + a.h/2; + float b2 = b.y + b.h/2; + if(b1 < b2){ + d.dy += 1; + d.dh += .5; + } + if (t1 > b2) { + d.dy = -1; + d.dh = 0; + } + if (b1 < t2){ + d.dy = 1; + d.dh = 0; + } + return d; +} + +float overlap(float x1, float w1, float x2, float w2) +{ + float l1 = x1 - w1/2; + float l2 = x2 - w2/2; + float left = l1 > l2 ? l1 : l2; + float r1 = x1 + w1/2; + float r2 = x2 + w2/2; + float right = r1 < r2 ? r1 : r2; + return right - left; +} + +float box_intersection(box a, box b) +{ + float w = overlap(a.x, a.w, b.x, b.w); + float h = overlap(a.y, a.h, b.y, b.h); + if(w < 0 || h < 0) return 0; + float area = w*h; + return area; +} + +float box_union(box a, box b) +{ + float i = box_intersection(a, b); + float u = a.w*a.h + b.w*b.h - i; + return u; +} + +float box_iou(box a, box b) +{ + return box_intersection(a, b)/box_union(a, b); +} + +float box_rmse(box a, box b) +{ + return sqrt(pow(a.x-b.x, 2) + + pow(a.y-b.y, 2) + + pow(a.w-b.w, 2) + + pow(a.h-b.h, 2)); +} + +dbox dintersect(box a, box b) +{ + float w = overlap(a.x, a.w, b.x, b.w); + float h = overlap(a.y, a.h, b.y, b.h); + dbox dover = derivative(a, b); + dbox di; + + di.dw = dover.dw*h; + di.dx = dover.dx*h; + di.dh = dover.dh*w; + di.dy = dover.dy*w; + + return di; +} + +dbox dunion(box a, box b) +{ + dbox du; + + dbox di = dintersect(a, b); + du.dw = a.h - di.dw; + du.dh = a.w - di.dh; + du.dx = -di.dx; + du.dy = -di.dy; + + return du; +} + + +void test_dunion() +{ + box a = {0, 0, 1, 1}; + box dxa= {0+.0001, 0, 1, 1}; + box dya= {0, 0+.0001, 1, 1}; + box dwa= {0, 0, 1+.0001, 1}; + box dha= {0, 0, 1, 1+.0001}; + + box b = {.5, .5, .2, .2}; + dbox di = dunion(a,b); + printf("Union: %f %f %f %f\n", di.dx, di.dy, di.dw, di.dh); + float inter = box_union(a, b); + float xinter = box_union(dxa, b); + float yinter = box_union(dya, b); + float winter = box_union(dwa, b); + float hinter = box_union(dha, b); + xinter = (xinter - inter)/(.0001); + yinter = (yinter - inter)/(.0001); + winter = (winter - inter)/(.0001); + hinter = (hinter - inter)/(.0001); + printf("Union Manual %f %f %f %f\n", xinter, yinter, winter, hinter); +} +void test_dintersect() +{ + box a = {0, 0, 1, 1}; + box dxa= {0+.0001, 0, 1, 1}; + box dya= {0, 0+.0001, 1, 1}; + box dwa= {0, 0, 1+.0001, 1}; + box dha= {0, 0, 1, 1+.0001}; + + box b = {.5, .5, .2, .2}; + dbox di = dintersect(a,b); + printf("Inter: %f %f %f %f\n", di.dx, di.dy, di.dw, di.dh); + float inter = box_intersection(a, b); + float xinter = box_intersection(dxa, b); + float yinter = box_intersection(dya, b); + float winter = box_intersection(dwa, b); + float hinter = box_intersection(dha, b); + xinter = (xinter - inter)/(.0001); + yinter = (yinter - inter)/(.0001); + winter = (winter - inter)/(.0001); + hinter = (hinter - inter)/(.0001); + printf("Inter Manual %f %f %f %f\n", xinter, yinter, winter, hinter); +} + +void test_box() +{ + test_dintersect(); + test_dunion(); + box a = {0, 0, 1, 1}; + box dxa= {0+.00001, 0, 1, 1}; + box dya= {0, 0+.00001, 1, 1}; + box dwa= {0, 0, 1+.00001, 1}; + box dha= {0, 0, 1, 1+.00001}; + + box b = {.5, 0, .2, .2}; + + float iou = box_iou(a,b); + iou = (1-iou)*(1-iou); + printf("%f\n", iou); + dbox d = diou(a, b); + printf("%f %f %f %f\n", d.dx, d.dy, d.dw, d.dh); + + float xiou = box_iou(dxa, b); + float yiou = box_iou(dya, b); + float wiou = box_iou(dwa, b); + float hiou = box_iou(dha, b); + xiou = ((1-xiou)*(1-xiou) - iou)/(.00001); + yiou = ((1-yiou)*(1-yiou) - iou)/(.00001); + wiou = ((1-wiou)*(1-wiou) - iou)/(.00001); + hiou = ((1-hiou)*(1-hiou) - iou)/(.00001); + printf("manual %f %f %f %f\n", xiou, yiou, wiou, hiou); +} + +dbox diou(box a, box b) +{ + float u = box_union(a,b); + float i = box_intersection(a,b); + dbox di = dintersect(a,b); + dbox du = dunion(a,b); + dbox dd = {0,0,0,0}; + + if(i <= 0 || 1) { + dd.dx = b.x - a.x; + dd.dy = b.y - a.y; + dd.dw = b.w - a.w; + dd.dh = b.h - a.h; + return dd; + } + + dd.dx = 2*pow((1-(i/u)),1)*(di.dx*u - du.dx*i)/(u*u); + dd.dy = 2*pow((1-(i/u)),1)*(di.dy*u - du.dy*i)/(u*u); + dd.dw = 2*pow((1-(i/u)),1)*(di.dw*u - du.dw*i)/(u*u); + dd.dh = 2*pow((1-(i/u)),1)*(di.dh*u - du.dh*i)/(u*u); + return dd; +} + + +void do_nms(box *boxes, float **probs, int total, int classes, float thresh) +{ + int i, j, k; + for(i = 0; i < total; ++i){ + int any = 0; + for(k = 0; k < classes; ++k) any = any || (probs[i][k] > 0); + if(!any) { + continue; + } + for(j = i+1; j < total; ++j){ + if (box_iou(boxes[i], boxes[j]) > thresh){ + for(k = 0; k < classes; ++k){ + if (probs[i][k] < probs[j][k]) probs[i][k] = 0; + else probs[j][k] = 0; + } + } + } + } +} + +box encode_box(box b, box anchor) +{ + box encode; + encode.x = (b.x - anchor.x) / anchor.w; + encode.y = (b.y - anchor.y) / anchor.h; + encode.w = log2(b.w / anchor.w); + encode.h = log2(b.h / anchor.h); + return encode; +} + +box decode_box(box b, box anchor) +{ + box decode; + decode.x = b.x * anchor.w + anchor.x; + decode.y = b.y * anchor.h + anchor.y; + decode.w = pow(2., b.w) * anchor.w; + decode.h = pow(2., b.h) * anchor.h; + return decode; +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/box.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/box.h" new file mode 100644 index 00000000..dda3e591 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/box.h" @@ -0,0 +1,14 @@ +#ifndef BOX_H +#define BOX_H +#include "darknet.h" + +typedef struct{ + float dx, dy, dw, dh; +} dbox; + +float box_rmse(box a, box b); +dbox diou(box a, box b); +box decode_box(box b, box anchor); +box encode_box(box b, box anchor); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/classifier.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/classifier.h" new file mode 100644 index 00000000..8b137891 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/classifier.h" @@ -0,0 +1 @@ + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im.c" new file mode 100644 index 00000000..5c4605e1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im.c" @@ -0,0 +1,39 @@ +#include +#include +void col2im_add_pixel(float *im, int height, int width, int channels, + int row, int col, int channel, int pad, float val) +{ + row -= pad; + col -= pad; + + if (row < 0 || col < 0 || + row >= height || col >= width) return; + im[col + width*(row + height*channel)] += val; +} +//This one might be too, can't remember. +void col2im_cpu(float* data_col, + int channels, int height, int width, + int ksize, int stride, int pad, float* data_im) +{ + int c,h,w; + int height_col = (height + 2*pad - ksize) / stride + 1; + int width_col = (width + 2*pad - ksize) / stride + 1; + + int channels_col = channels * ksize * ksize; + for (c = 0; c < channels_col; ++c) { + int w_offset = c % ksize; + int h_offset = (c / ksize) % ksize; + int c_im = c / ksize / ksize; + for (h = 0; h < height_col; ++h) { + for (w = 0; w < width_col; ++w) { + int im_row = h_offset + h * stride; + int im_col = w_offset + w * stride; + int col_index = (c * height_col + h) * width_col + w; + double val = data_col[col_index]; + col2im_add_pixel(data_im, height, width, channels, + im_row, im_col, c_im, pad, val); + } + } + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im.h" new file mode 100644 index 00000000..3fbe0530 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im.h" @@ -0,0 +1,13 @@ +#ifndef COL2IM_H +#define COL2IM_H + +void col2im_cpu(float* data_col, + int channels, int height, int width, + int ksize, int stride, int pad, float* data_im); + +#ifdef GPU +void col2im_gpu(float *data_col, + int channels, int height, int width, + int ksize, int stride, int pad, float *data_im); +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im_kernels.cu" new file mode 100644 index 00000000..ba45e0fd --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/col2im_kernels.cu" @@ -0,0 +1,58 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "col2im.h" +#include "cuda.h" +} + +// src: https://github.com/BVLC/caffe/blob/master/src/caffe/util/im2col.cu +// You may also want to read: https://github.com/BVLC/caffe/blob/master/LICENSE + +__global__ void col2im_gpu_kernel(const int n, const float* data_col, + const int height, const int width, const int ksize, + const int pad, + const int stride, + const int height_col, const int width_col, + float *data_im) { + int index = blockIdx.x*blockDim.x+threadIdx.x; + for(; index < n; index += blockDim.x*gridDim.x){ + float val = 0; + int w = index % width + pad; + int h = (index / width) % height + pad; + int c = index / (width * height); + // compute the start and end of the output + int w_col_start = (w < ksize) ? 0 : (w - ksize) / stride + 1; + int w_col_end = min(w / stride + 1, width_col); + int h_col_start = (h < ksize) ? 0 : (h - ksize) / stride + 1; + int h_col_end = min(h / stride + 1, height_col); + // equivalent implementation + int offset = + (c * ksize * ksize + h * ksize + w) * height_col * width_col; + int coeff_h_col = (1 - stride * ksize * height_col) * width_col; + int coeff_w_col = (1 - stride * height_col * width_col); + for (int h_col = h_col_start; h_col < h_col_end; ++h_col) { + for (int w_col = w_col_start; w_col < w_col_end; ++w_col) { + val += data_col[offset + h_col * coeff_h_col + w_col * coeff_w_col]; + } + } + data_im[index] += val; + } +} + +void col2im_gpu(float *data_col, + int channels, int height, int width, + int ksize, int stride, int pad, float *data_im){ + // We are going to launch channels * height_col * width_col kernels, each + // kernel responsible for copying a single-channel grid. + int height_col = (height + 2 * pad - ksize) / stride + 1; + int width_col = (width + 2 * pad - ksize) / stride + 1; + int num_kernels = channels * height * width; + col2im_gpu_kernel<<<(num_kernels+BLOCK-1)/BLOCK, + BLOCK>>>( + num_kernels, data_col, height, width, ksize, pad, + stride, height_col, + width_col, data_im); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/compare.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/compare.c" new file mode 100644 index 00000000..d2d2b3bd --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/compare.c" @@ -0,0 +1,352 @@ +#include + +#include "network.h" +#include "detection_layer.h" +#include "cost_layer.h" +#include "utils.h" +#include "parser.h" +#include "box.h" + +void train_compare(char *cfgfile, char *weightfile) +{ + srand(time(0)); + float avg_loss = -1; + char *base = basecfg(cfgfile); + char *backup_directory = "/home/pjreddie/backup/"; + printf("%s\n", base); + network net = parse_network_cfg(cfgfile); + if(weightfile){ + load_weights(&net, weightfile); + } + printf("Learning Rate: %g, Momentum: %g, Decay: %g\n", net.learning_rate, net.momentum, net.decay); + int imgs = 1024; + list *plist = get_paths("data/compare.train.list"); + char **paths = (char **)list_to_array(plist); + int N = plist->size; + printf("%d\n", N); + clock_t time; + pthread_t load_thread; + data train; + data buffer; + + load_args args = {0}; + args.w = net.w; + args.h = net.h; + args.paths = paths; + args.classes = 20; + args.n = imgs; + args.m = N; + args.d = &buffer; + args.type = COMPARE_DATA; + + load_thread = load_data_in_thread(args); + int epoch = *net.seen/N; + int i = 0; + while(1){ + ++i; + time=clock(); + pthread_join(load_thread, 0); + train = buffer; + + load_thread = load_data_in_thread(args); + printf("Loaded: %lf seconds\n", sec(clock()-time)); + time=clock(); + float loss = train_network(net, train); + if(avg_loss == -1) avg_loss = loss; + avg_loss = avg_loss*.9 + loss*.1; + printf("%.3f: %f, %f avg, %lf seconds, %ld images\n", (float)*net.seen/N, loss, avg_loss, sec(clock()-time), *net.seen); + free_data(train); + if(i%100 == 0){ + char buff[256]; + sprintf(buff, "%s/%s_%d_minor_%d.weights",backup_directory,base, epoch, i); + save_weights(net, buff); + } + if(*net.seen/N > epoch){ + epoch = *net.seen/N; + i = 0; + char buff[256]; + sprintf(buff, "%s/%s_%d.weights",backup_directory,base, epoch); + save_weights(net, buff); + if(epoch%22 == 0) net.learning_rate *= .1; + } + } + pthread_join(load_thread, 0); + free_data(buffer); + free_network(net); + free_ptrs((void**)paths, plist->size); + free_list(plist); + free(base); +} + +void validate_compare(char *filename, char *weightfile) +{ + int i = 0; + network net = parse_network_cfg(filename); + if(weightfile){ + load_weights(&net, weightfile); + } + srand(time(0)); + + list *plist = get_paths("data/compare.val.list"); + //list *plist = get_paths("data/compare.val.old"); + char **paths = (char **)list_to_array(plist); + int N = plist->size/2; + free_list(plist); + + clock_t time; + int correct = 0; + int total = 0; + int splits = 10; + int num = (i+1)*N/splits - i*N/splits; + + data val, buffer; + + load_args args = {0}; + args.w = net.w; + args.h = net.h; + args.paths = paths; + args.classes = 20; + args.n = num; + args.m = 0; + args.d = &buffer; + args.type = COMPARE_DATA; + + pthread_t load_thread = load_data_in_thread(args); + for(i = 1; i <= splits; ++i){ + time=clock(); + + pthread_join(load_thread, 0); + val = buffer; + + num = (i+1)*N/splits - i*N/splits; + char **part = paths+(i*N/splits); + if(i != splits){ + args.paths = part; + load_thread = load_data_in_thread(args); + } + printf("Loaded: %d images in %lf seconds\n", val.X.rows, sec(clock()-time)); + + time=clock(); + matrix pred = network_predict_data(net, val); + int j,k; + for(j = 0; j < val.y.rows; ++j){ + for(k = 0; k < 20; ++k){ + if(val.y.vals[j][k*2] != val.y.vals[j][k*2+1]){ + ++total; + if((val.y.vals[j][k*2] < val.y.vals[j][k*2+1]) == (pred.vals[j][k*2] < pred.vals[j][k*2+1])){ + ++correct; + } + } + } + } + free_matrix(pred); + printf("%d: Acc: %f, %lf seconds, %d images\n", i, (float)correct/total, sec(clock()-time), val.X.rows); + free_data(val); + } +} + +typedef struct { + network net; + char *filename; + int class; + int classes; + float elo; + float *elos; +} sortable_bbox; + +int total_compares = 0; +int current_class = 0; + +int elo_comparator(const void*a, const void *b) +{ + sortable_bbox box1 = *(sortable_bbox*)a; + sortable_bbox box2 = *(sortable_bbox*)b; + if(box1.elos[current_class] == box2.elos[current_class]) return 0; + if(box1.elos[current_class] > box2.elos[current_class]) return -1; + return 1; +} + +int bbox_comparator(const void *a, const void *b) +{ + ++total_compares; + sortable_bbox box1 = *(sortable_bbox*)a; + sortable_bbox box2 = *(sortable_bbox*)b; + network net = box1.net; + int class = box1.class; + + image im1 = load_image_color(box1.filename, net.w, net.h); + image im2 = load_image_color(box2.filename, net.w, net.h); + float *X = calloc(net.w*net.h*net.c, sizeof(float)); + memcpy(X, im1.data, im1.w*im1.h*im1.c*sizeof(float)); + memcpy(X+im1.w*im1.h*im1.c, im2.data, im2.w*im2.h*im2.c*sizeof(float)); + float *predictions = network_predict(net, X); + + free_image(im1); + free_image(im2); + free(X); + if (predictions[class*2] > predictions[class*2+1]){ + return 1; + } + return -1; +} + +void bbox_update(sortable_bbox *a, sortable_bbox *b, int class, int result) +{ + int k = 32; + float EA = 1./(1+pow(10, (b->elos[class] - a->elos[class])/400.)); + float EB = 1./(1+pow(10, (a->elos[class] - b->elos[class])/400.)); + float SA = result ? 1 : 0; + float SB = result ? 0 : 1; + a->elos[class] += k*(SA - EA); + b->elos[class] += k*(SB - EB); +} + +void bbox_fight(network net, sortable_bbox *a, sortable_bbox *b, int classes, int class) +{ + image im1 = load_image_color(a->filename, net.w, net.h); + image im2 = load_image_color(b->filename, net.w, net.h); + float *X = calloc(net.w*net.h*net.c, sizeof(float)); + memcpy(X, im1.data, im1.w*im1.h*im1.c*sizeof(float)); + memcpy(X+im1.w*im1.h*im1.c, im2.data, im2.w*im2.h*im2.c*sizeof(float)); + float *predictions = network_predict(net, X); + ++total_compares; + + int i; + for(i = 0; i < classes; ++i){ + if(class < 0 || class == i){ + int result = predictions[i*2] > predictions[i*2+1]; + bbox_update(a, b, i, result); + } + } + + free_image(im1); + free_image(im2); + free(X); +} + +void SortMaster3000(char *filename, char *weightfile) +{ + int i = 0; + network net = parse_network_cfg(filename); + if(weightfile){ + load_weights(&net, weightfile); + } + srand(time(0)); + set_batch_network(&net, 1); + + list *plist = get_paths("data/compare.sort.list"); + //list *plist = get_paths("data/compare.val.old"); + char **paths = (char **)list_to_array(plist); + int N = plist->size; + free_list(plist); + sortable_bbox *boxes = calloc(N, sizeof(sortable_bbox)); + printf("Sorting %d boxes...\n", N); + for(i = 0; i < N; ++i){ + boxes[i].filename = paths[i]; + boxes[i].net = net; + boxes[i].class = 7; + boxes[i].elo = 1500; + } + clock_t time=clock(); + qsort(boxes, N, sizeof(sortable_bbox), bbox_comparator); + for(i = 0; i < N; ++i){ + printf("%s\n", boxes[i].filename); + } + printf("Sorted in %d compares, %f secs\n", total_compares, sec(clock()-time)); +} + +void BattleRoyaleWithCheese(char *filename, char *weightfile) +{ + int classes = 20; + int i,j; + network net = parse_network_cfg(filename); + if(weightfile){ + load_weights(&net, weightfile); + } + srand(time(0)); + set_batch_network(&net, 1); + + list *plist = get_paths("data/compare.sort.list"); + //list *plist = get_paths("data/compare.small.list"); + //list *plist = get_paths("data/compare.cat.list"); + //list *plist = get_paths("data/compare.val.old"); + char **paths = (char **)list_to_array(plist); + int N = plist->size; + int total = N; + free_list(plist); + sortable_bbox *boxes = calloc(N, sizeof(sortable_bbox)); + printf("Battling %d boxes...\n", N); + for(i = 0; i < N; ++i){ + boxes[i].filename = paths[i]; + boxes[i].net = net; + boxes[i].classes = classes; + boxes[i].elos = calloc(classes, sizeof(float));; + for(j = 0; j < classes; ++j){ + boxes[i].elos[j] = 1500; + } + } + int round; + clock_t time=clock(); + for(round = 1; round <= 4; ++round){ + clock_t round_time=clock(); + printf("Round: %d\n", round); + shuffle(boxes, N, sizeof(sortable_bbox)); + for(i = 0; i < N/2; ++i){ + bbox_fight(net, boxes+i*2, boxes+i*2+1, classes, -1); + } + printf("Round: %f secs, %d remaining\n", sec(clock()-round_time), N); + } + + int class; + + for (class = 0; class < classes; ++class){ + + N = total; + current_class = class; + qsort(boxes, N, sizeof(sortable_bbox), elo_comparator); + N /= 2; + + for(round = 1; round <= 100; ++round){ + clock_t round_time=clock(); + printf("Round: %d\n", round); + + sorta_shuffle(boxes, N, sizeof(sortable_bbox), 10); + for(i = 0; i < N/2; ++i){ + bbox_fight(net, boxes+i*2, boxes+i*2+1, classes, class); + } + qsort(boxes, N, sizeof(sortable_bbox), elo_comparator); + if(round <= 20) N = (N*9/10)/2*2; + + printf("Round: %f secs, %d remaining\n", sec(clock()-round_time), N); + } + char buff[256]; + sprintf(buff, "results/battle_%d.log", class); + FILE *outfp = fopen(buff, "w"); + for(i = 0; i < N; ++i){ + fprintf(outfp, "%s %f\n", boxes[i].filename, boxes[i].elos[class]); + } + fclose(outfp); + } + printf("Tournament in %d compares, %f secs\n", total_compares, sec(clock()-time)); +} + +void run_compare(int argc, char **argv) +{ + if(argc < 4){ + fprintf(stderr, "usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]); + return; + } + + char *cfg = argv[3]; + char *weights = (argc > 4) ? argv[4] : 0; + //char *filename = (argc > 5) ? argv[5]: 0; + if(0==strcmp(argv[2], "train")) train_compare(cfg, weights); + else if(0==strcmp(argv[2], "valid")) validate_compare(cfg, weights); + else if(0==strcmp(argv[2], "sort")) SortMaster3000(cfg, weights); + else if(0==strcmp(argv[2], "battle")) BattleRoyaleWithCheese(cfg, weights); + /* + else if(0==strcmp(argv[2], "train")) train_coco(cfg, weights); + else if(0==strcmp(argv[2], "extract")) extract_boxes(cfg, weights); + else if(0==strcmp(argv[2], "valid")) validate_recall(cfg, weights); + */ +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/connected_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/connected_layer.c" new file mode 100644 index 00000000..353f4e56 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/connected_layer.c" @@ -0,0 +1,336 @@ +#include "connected_layer.h" +#include "convolutional_layer.h" +#include "batchnorm_layer.h" +#include "utils.h" +#include "cuda.h" +#include "blas.h" +#include "gemm.h" + +#include +#include +#include +#include + +layer make_connected_layer(int batch, int inputs, int outputs, ACTIVATION activation, int batch_normalize, int adam) +{ + int i; + layer l = {0}; + l.learning_rate_scale = 1; + l.type = CONNECTED; + + l.inputs = inputs; + l.outputs = outputs; + l.batch=batch; + l.batch_normalize = batch_normalize; + l.h = 1; + l.w = 1; + l.c = inputs; + l.out_h = 1; + l.out_w = 1; + l.out_c = outputs; + + l.output = calloc(batch*outputs, sizeof(float)); + l.delta = calloc(batch*outputs, sizeof(float)); + + l.weight_updates = calloc(inputs*outputs, sizeof(float)); + l.bias_updates = calloc(outputs, sizeof(float)); + + l.weights = calloc(outputs*inputs, sizeof(float)); + l.biases = calloc(outputs, sizeof(float)); + + l.forward = forward_connected_layer; + l.backward = backward_connected_layer; + l.update = update_connected_layer; + + //float scale = 1./sqrt(inputs); + float scale = sqrt(2./inputs); + for(i = 0; i < outputs*inputs; ++i){ + l.weights[i] = scale*rand_uniform(-1, 1); + } + + for(i = 0; i < outputs; ++i){ + l.biases[i] = 0; + } + + if(adam){ + l.m = calloc(l.inputs*l.outputs, sizeof(float)); + l.v = calloc(l.inputs*l.outputs, sizeof(float)); + l.bias_m = calloc(l.outputs, sizeof(float)); + l.scale_m = calloc(l.outputs, sizeof(float)); + l.bias_v = calloc(l.outputs, sizeof(float)); + l.scale_v = calloc(l.outputs, sizeof(float)); + } + if(batch_normalize){ + l.scales = calloc(outputs, sizeof(float)); + l.scale_updates = calloc(outputs, sizeof(float)); + for(i = 0; i < outputs; ++i){ + l.scales[i] = 1; + } + + l.mean = calloc(outputs, sizeof(float)); + l.mean_delta = calloc(outputs, sizeof(float)); + l.variance = calloc(outputs, sizeof(float)); + l.variance_delta = calloc(outputs, sizeof(float)); + + l.rolling_mean = calloc(outputs, sizeof(float)); + l.rolling_variance = calloc(outputs, sizeof(float)); + + l.x = calloc(batch*outputs, sizeof(float)); + l.x_norm = calloc(batch*outputs, sizeof(float)); + } + +#ifdef GPU + l.forward_gpu = forward_connected_layer_gpu; + l.backward_gpu = backward_connected_layer_gpu; + l.update_gpu = update_connected_layer_gpu; + + l.weights_gpu = cuda_make_array(l.weights, outputs*inputs); + l.biases_gpu = cuda_make_array(l.biases, outputs); + + l.weight_updates_gpu = cuda_make_array(l.weight_updates, outputs*inputs); + l.bias_updates_gpu = cuda_make_array(l.bias_updates, outputs); + + l.output_gpu = cuda_make_array(l.output, outputs*batch); + l.delta_gpu = cuda_make_array(l.delta, outputs*batch); + if (adam) { + l.m_gpu = cuda_make_array(0, inputs*outputs); + l.v_gpu = cuda_make_array(0, inputs*outputs); + l.bias_m_gpu = cuda_make_array(0, outputs); + l.bias_v_gpu = cuda_make_array(0, outputs); + l.scale_m_gpu = cuda_make_array(0, outputs); + l.scale_v_gpu = cuda_make_array(0, outputs); + } + + if(batch_normalize){ + l.mean_gpu = cuda_make_array(l.mean, outputs); + l.variance_gpu = cuda_make_array(l.variance, outputs); + + l.rolling_mean_gpu = cuda_make_array(l.mean, outputs); + l.rolling_variance_gpu = cuda_make_array(l.variance, outputs); + + l.mean_delta_gpu = cuda_make_array(l.mean, outputs); + l.variance_delta_gpu = cuda_make_array(l.variance, outputs); + + l.scales_gpu = cuda_make_array(l.scales, outputs); + l.scale_updates_gpu = cuda_make_array(l.scale_updates, outputs); + + l.x_gpu = cuda_make_array(l.output, l.batch*outputs); + l.x_norm_gpu = cuda_make_array(l.output, l.batch*outputs); +#ifdef CUDNN + cudnnCreateTensorDescriptor(&l.normTensorDesc); + cudnnCreateTensorDescriptor(&l.dstTensorDesc); + cudnnSetTensor4dDescriptor(l.dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l.batch, l.out_c, l.out_h, l.out_w); + cudnnSetTensor4dDescriptor(l.normTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l.out_c, 1, 1); +#endif + } +#endif + l.activation = activation; + fprintf(stderr, "connected %4d -> %4d\n", inputs, outputs); + return l; +} + +void update_connected_layer(layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + axpy_cpu(l.outputs, learning_rate/batch, l.bias_updates, 1, l.biases, 1); + scal_cpu(l.outputs, momentum, l.bias_updates, 1); + + if(l.batch_normalize){ + axpy_cpu(l.outputs, learning_rate/batch, l.scale_updates, 1, l.scales, 1); + scal_cpu(l.outputs, momentum, l.scale_updates, 1); + } + + axpy_cpu(l.inputs*l.outputs, -decay*batch, l.weights, 1, l.weight_updates, 1); + axpy_cpu(l.inputs*l.outputs, learning_rate/batch, l.weight_updates, 1, l.weights, 1); + scal_cpu(l.inputs*l.outputs, momentum, l.weight_updates, 1); +} + +void forward_connected_layer(layer l, network net) +{ + fill_cpu(l.outputs*l.batch, 0, l.output, 1); + int m = l.batch; + int k = l.inputs; + int n = l.outputs; + float *a = net.input; + float *b = l.weights; + float *c = l.output; + gemm(0,1,m,n,k,1,a,k,b,k,1,c,n); + if(l.batch_normalize){ + forward_batchnorm_layer(l, net); + } else { + add_bias(l.output, l.biases, l.batch, l.outputs, 1); + } + activate_array(l.output, l.outputs*l.batch, l.activation); +} + +void backward_connected_layer(layer l, network net) +{ + gradient_array(l.output, l.outputs*l.batch, l.activation, l.delta); + + if(l.batch_normalize){ + backward_batchnorm_layer(l, net); + } else { + backward_bias(l.bias_updates, l.delta, l.batch, l.outputs, 1); + } + + int m = l.outputs; + int k = l.batch; + int n = l.inputs; + float *a = l.delta; + float *b = net.input; + float *c = l.weight_updates; + gemm(1,0,m,n,k,1,a,m,b,n,1,c,n); + + m = l.batch; + k = l.outputs; + n = l.inputs; + + a = l.delta; + b = l.weights; + c = net.delta; + + if(c) gemm(0,0,m,n,k,1,a,k,b,n,1,c,n); +} + + +void denormalize_connected_layer(layer l) +{ + int i, j; + for(i = 0; i < l.outputs; ++i){ + float scale = l.scales[i]/sqrt(l.rolling_variance[i] + .000001); + for(j = 0; j < l.inputs; ++j){ + l.weights[i*l.inputs + j] *= scale; + } + l.biases[i] -= l.rolling_mean[i] * scale; + l.scales[i] = 1; + l.rolling_mean[i] = 0; + l.rolling_variance[i] = 1; + } +} + + +void statistics_connected_layer(layer l) +{ + if(l.batch_normalize){ + printf("Scales "); + print_statistics(l.scales, l.outputs); + /* + printf("Rolling Mean "); + print_statistics(l.rolling_mean, l.outputs); + printf("Rolling Variance "); + print_statistics(l.rolling_variance, l.outputs); + */ + } + printf("Biases "); + print_statistics(l.biases, l.outputs); + printf("Weights "); + print_statistics(l.weights, l.outputs); +} + +#ifdef GPU + +void pull_connected_layer(layer l) +{ + cuda_pull_array(l.weights_gpu, l.weights, l.inputs*l.outputs); + cuda_pull_array(l.biases_gpu, l.biases, l.outputs); + cuda_pull_array(l.weight_updates_gpu, l.weight_updates, l.inputs*l.outputs); + cuda_pull_array(l.bias_updates_gpu, l.bias_updates, l.outputs); + if (l.batch_normalize){ + cuda_pull_array(l.scales_gpu, l.scales, l.outputs); + cuda_pull_array(l.rolling_mean_gpu, l.rolling_mean, l.outputs); + cuda_pull_array(l.rolling_variance_gpu, l.rolling_variance, l.outputs); + } +} + +void push_connected_layer(layer l) +{ + cuda_push_array(l.weights_gpu, l.weights, l.inputs*l.outputs); + cuda_push_array(l.biases_gpu, l.biases, l.outputs); + cuda_push_array(l.weight_updates_gpu, l.weight_updates, l.inputs*l.outputs); + cuda_push_array(l.bias_updates_gpu, l.bias_updates, l.outputs); + if (l.batch_normalize){ + cuda_push_array(l.scales_gpu, l.scales, l.outputs); + cuda_push_array(l.rolling_mean_gpu, l.rolling_mean, l.outputs); + cuda_push_array(l.rolling_variance_gpu, l.rolling_variance, l.outputs); + } +} + +void update_connected_layer_gpu(layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + if(a.adam){ + adam_update_gpu(l.weights_gpu, l.weight_updates_gpu, l.m_gpu, l.v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.inputs*l.outputs, batch, a.t); + adam_update_gpu(l.biases_gpu, l.bias_updates_gpu, l.bias_m_gpu, l.bias_v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.outputs, batch, a.t); + if(l.scales_gpu){ + adam_update_gpu(l.scales_gpu, l.scale_updates_gpu, l.scale_m_gpu, l.scale_v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.outputs, batch, a.t); + } + }else{ + axpy_gpu(l.outputs, learning_rate/batch, l.bias_updates_gpu, 1, l.biases_gpu, 1); + scal_gpu(l.outputs, momentum, l.bias_updates_gpu, 1); + + if(l.batch_normalize){ + axpy_gpu(l.outputs, learning_rate/batch, l.scale_updates_gpu, 1, l.scales_gpu, 1); + scal_gpu(l.outputs, momentum, l.scale_updates_gpu, 1); + } + + axpy_gpu(l.inputs*l.outputs, -decay*batch, l.weights_gpu, 1, l.weight_updates_gpu, 1); + axpy_gpu(l.inputs*l.outputs, learning_rate/batch, l.weight_updates_gpu, 1, l.weights_gpu, 1); + scal_gpu(l.inputs*l.outputs, momentum, l.weight_updates_gpu, 1); + } +} + +void forward_connected_layer_gpu(layer l, network net) +{ + fill_gpu(l.outputs*l.batch, 0, l.output_gpu, 1); + + int m = l.batch; + int k = l.inputs; + int n = l.outputs; + float * a = net.input_gpu; + float * b = l.weights_gpu; + float * c = l.output_gpu; + gemm_gpu(0,1,m,n,k,1,a,k,b,k,1,c,n); + + if (l.batch_normalize) { + forward_batchnorm_layer_gpu(l, net); + } else { + add_bias_gpu(l.output_gpu, l.biases_gpu, l.batch, l.outputs, 1); + } + activate_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation); +} + +void backward_connected_layer_gpu(layer l, network net) +{ + constrain_gpu(l.outputs*l.batch, 1, l.delta_gpu, 1); + gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); + if(l.batch_normalize){ + backward_batchnorm_layer_gpu(l, net); + } else { + backward_bias_gpu(l.bias_updates_gpu, l.delta_gpu, l.batch, l.outputs, 1); + } + + int m = l.outputs; + int k = l.batch; + int n = l.inputs; + float * a = l.delta_gpu; + float * b = net.input_gpu; + float * c = l.weight_updates_gpu; + gemm_gpu(1,0,m,n,k,1,a,m,b,n,1,c,n); + + m = l.batch; + k = l.outputs; + n = l.inputs; + + a = l.delta_gpu; + b = l.weights_gpu; + c = net.delta_gpu; + + if(c) gemm_gpu(0,0,m,n,k,1,a,k,b,n,1,c,n); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/connected_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/connected_layer.h" new file mode 100644 index 00000000..6727a964 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/connected_layer.h" @@ -0,0 +1,23 @@ +#ifndef CONNECTED_LAYER_H +#define CONNECTED_LAYER_H + +#include "activations.h" +#include "layer.h" +#include "network.h" + +layer make_connected_layer(int batch, int inputs, int outputs, ACTIVATION activation, int batch_normalize, int adam); + +void forward_connected_layer(layer l, network net); +void backward_connected_layer(layer l, network net); +void update_connected_layer(layer l, update_args a); + +#ifdef GPU +void forward_connected_layer_gpu(layer l, network net); +void backward_connected_layer_gpu(layer l, network net); +void update_connected_layer_gpu(layer l, update_args a); +void push_connected_layer(layer l); +void pull_connected_layer(layer l); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_kernels.cu" new file mode 100644 index 00000000..4a1047b8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_kernels.cu" @@ -0,0 +1,330 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "convolutional_layer.h" +#include "batchnorm_layer.h" +#include "gemm.h" +#include "blas.h" +#include "im2col.h" +#include "col2im.h" +#include "utils.h" +#include "cuda.h" +} + +__global__ void binarize_kernel(float *x, int n, float *binary) +{ + int i = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (i >= n) return; + binary[i] = (x[i] >= 0) ? 1 : -1; +} + +void binarize_gpu(float *x, int n, float *binary) +{ + binarize_kernel<<>>(x, n, binary); + check_error(cudaPeekAtLastError()); +} + +__global__ void binarize_input_kernel(float *input, int n, int size, float *binary) +{ + int s = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (s >= size) return; + int i = 0; + float mean = 0; + for(i = 0; i < n; ++i){ + mean += fabsf(input[i*size + s]); + } + mean = mean / n; + for(i = 0; i < n; ++i){ + binary[i*size + s] = (input[i*size + s] > 0) ? mean : -mean; + } +} + +void binarize_input_gpu(float *input, int n, int size, float *binary) +{ + binarize_input_kernel<<>>(input, n, size, binary); + check_error(cudaPeekAtLastError()); +} + + +__global__ void binarize_weights_kernel(float *weights, int n, int size, float *binary) +{ + int f = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if (f >= n) return; + int i = 0; + float mean = 0; + for(i = 0; i < size; ++i){ + mean += fabsf(weights[f*size + i]); + } + mean = mean / size; + for(i = 0; i < size; ++i){ + binary[f*size + i] = (weights[f*size + i] > 0) ? mean : -mean; + //binary[f*size + i] = weights[f*size + i]; + } +} + +void binarize_weights_gpu(float *weights, int n, int size, float *binary) +{ + binarize_weights_kernel<<>>(weights, n, size, binary); + check_error(cudaPeekAtLastError()); +} + +void forward_convolutional_layer_gpu(convolutional_layer l, network net) +{ + fill_gpu(l.outputs*l.batch, 0, l.output_gpu, 1); + if(l.binary){ + binarize_weights_gpu(l.weights_gpu, l.n, l.c/l.groups*l.size*l.size, l.binary_weights_gpu); + swap_binary(&l); + } + + if(l.xnor){ + binarize_weights_gpu(l.weights_gpu, l.n, l.c/l.groups*l.size*l.size, l.binary_weights_gpu); + swap_binary(&l); + binarize_gpu(net.input_gpu, l.c*l.h*l.w*l.batch, l.binary_input_gpu); + net.input_gpu = l.binary_input_gpu; + } + +#ifdef CUDNN + float one = 1; + cudnnConvolutionForward(cudnn_handle(), + &one, + l.srcTensorDesc, + net.input_gpu, + l.weightDesc, + l.weights_gpu, + l.convDesc, + l.fw_algo, + net.workspace, + l.workspace_size, + &one, + l.dstTensorDesc, + l.output_gpu); + +#else + int i, j; + int m = l.n/l.groups; + int k = l.size*l.size*l.c/l.groups; + int n = l.out_w*l.out_h; + for(i = 0; i < l.batch; ++i){ + for(j = 0; j < l.groups; ++j){ + float *a = l.weights_gpu + j*l.nweights/l.groups; + float *b = net.workspace; + float *c = l.output_gpu + (i*l.groups + j)*n*m; + float *im = net.input_gpu + (i*l.groups + j)*l.c/l.groups*l.h*l.w; + + if (l.size == 1){ + b = im; + } else { + im2col_gpu(im, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b); + } + gemm_gpu(0,0,m,n,k,1,a,k,b,n,1,c,n); + } + } +#endif + + if (l.batch_normalize) { + forward_batchnorm_layer_gpu(l, net); + } else { + add_bias_gpu(l.output_gpu, l.biases_gpu, l.batch, l.n, l.out_w*l.out_h); + } + + activate_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation); + //if(l.dot > 0) dot_error_gpu(l); + if(l.binary || l.xnor) swap_binary(&l); +} + +__global__ void smooth_kernel(float *x, int n, int w, int h, int c, int size, float rate, float *delta) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= n) return; + + int j = id % w; + id /= w; + int i = id % h; + id /= h; + int k = id % c; + id /= c; + int b = id; + + int w_offset = -(size/2.f); + int h_offset = -(size/2.f); + + int out_index = j + w*(i + h*(k + c*b)); + int l, m; + for(l = 0; l < size; ++l){ + for(m = 0; m < size; ++m){ + int cur_h = h_offset + i + l; + int cur_w = w_offset + j + m; + int index = cur_w + w*(cur_h + h*(k + b*c)); + int valid = (cur_h >= 0 && cur_h < h && + cur_w >= 0 && cur_w < w); + delta[out_index] += valid ? rate*(x[index] - x[out_index]) : 0; + } + } +} + +extern "C" void smooth_layer(layer l, int size, float rate) +{ + int h = l.out_h; + int w = l.out_w; + int c = l.out_c; + + size_t n = h*w*c*l.batch; + + smooth_kernel<<>>(l.output_gpu, n, l.w, l.h, l.c, size, rate, l.delta_gpu); + check_error(cudaPeekAtLastError()); +} + +void backward_convolutional_layer_gpu(convolutional_layer l, network net) +{ + if(l.smooth){ + smooth_layer(l, 5, l.smooth); + } + //constrain_gpu(l.outputs*l.batch, 1, l.delta_gpu, 1); + gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); + + + if(l.batch_normalize){ + backward_batchnorm_layer_gpu(l, net); + } else { + backward_bias_gpu(l.bias_updates_gpu, l.delta_gpu, l.batch, l.n, l.out_w*l.out_h); + } + float *original_input = net.input_gpu; + + if(l.xnor) net.input_gpu = l.binary_input_gpu; +#ifdef CUDNN + float one = 1; + cudnnConvolutionBackwardFilter(cudnn_handle(), + &one, + l.srcTensorDesc, + net.input_gpu, + l.ddstTensorDesc, + l.delta_gpu, + l.convDesc, + l.bf_algo, + net.workspace, + l.workspace_size, + &one, + l.dweightDesc, + l.weight_updates_gpu); + + if(net.delta_gpu){ + if(l.binary || l.xnor) swap_binary(&l); + cudnnConvolutionBackwardData(cudnn_handle(), + &one, + l.weightDesc, + l.weights_gpu, + l.ddstTensorDesc, + l.delta_gpu, + l.convDesc, + l.bd_algo, + net.workspace, + l.workspace_size, + &one, + l.dsrcTensorDesc, + net.delta_gpu); + if(l.binary || l.xnor) swap_binary(&l); + if(l.xnor) gradient_array_gpu(original_input, l.batch*l.c*l.h*l.w, HARDTAN, net.delta_gpu); + } + +#else + int m = l.n/l.groups; + int n = l.size*l.size*l.c/l.groups; + int k = l.out_w*l.out_h; + + int i, j; + for(i = 0; i < l.batch; ++i){ + for(j = 0; j < l.groups; ++j){ + float *a = l.delta_gpu + (i*l.groups + j)*m*k; + float *b = net.workspace; + float *c = l.weight_updates_gpu + j*l.nweights/l.groups; + + float *im = net.input_gpu+(i*l.groups + j)*l.c/l.groups*l.h*l.w; + float *imd = net.delta_gpu+(i*l.groups + j)*l.c/l.groups*l.h*l.w; + + im2col_gpu(im, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b); + gemm_gpu(0,1,m,n,k,1,a,k,b,k,1,c,n); + + if (net.delta_gpu) { + if (l.binary || l.xnor) swap_binary(&l); + a = l.weights_gpu + j*l.nweights/l.groups; + b = l.delta_gpu + (i*l.groups + j)*m*k; + c = net.workspace; + if (l.size == 1) { + c = imd; + } + + gemm_gpu(1,0,n,k,m,1,a,n,b,k,0,c,k); + + if (l.size != 1) { + col2im_gpu(net.workspace, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, imd); + } + if(l.binary || l.xnor) { + swap_binary(&l); + } + } + if(l.xnor) gradient_array_gpu(original_input + i*l.c*l.h*l.w, l.c*l.h*l.w, HARDTAN, net.delta_gpu + i*l.c*l.h*l.w); + } + } +#endif +} + +void pull_convolutional_layer(layer l) +{ + cuda_pull_array(l.weights_gpu, l.weights, l.nweights); + cuda_pull_array(l.biases_gpu, l.biases, l.n); + cuda_pull_array(l.weight_updates_gpu, l.weight_updates, l.nweights); + cuda_pull_array(l.bias_updates_gpu, l.bias_updates, l.n); + if (l.batch_normalize){ + cuda_pull_array(l.scales_gpu, l.scales, l.n); + cuda_pull_array(l.rolling_mean_gpu, l.rolling_mean, l.n); + cuda_pull_array(l.rolling_variance_gpu, l.rolling_variance, l.n); + } +} + +void push_convolutional_layer(layer l) +{ + cuda_push_array(l.weights_gpu, l.weights, l.nweights); + cuda_push_array(l.biases_gpu, l.biases, l.n); + cuda_push_array(l.weight_updates_gpu, l.weight_updates, l.nweights); + cuda_push_array(l.bias_updates_gpu, l.bias_updates, l.n); + if (l.batch_normalize){ + cuda_push_array(l.scales_gpu, l.scales, l.n); + cuda_push_array(l.rolling_mean_gpu, l.rolling_mean, l.n); + cuda_push_array(l.rolling_variance_gpu, l.rolling_variance, l.n); + } +} + +void update_convolutional_layer_gpu(layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + + if(a.adam){ + adam_update_gpu(l.weights_gpu, l.weight_updates_gpu, l.m_gpu, l.v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.nweights, batch, a.t); + adam_update_gpu(l.biases_gpu, l.bias_updates_gpu, l.bias_m_gpu, l.bias_v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.n, batch, a.t); + if(l.scales_gpu){ + adam_update_gpu(l.scales_gpu, l.scale_updates_gpu, l.scale_m_gpu, l.scale_v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.n, batch, a.t); + } + }else{ + axpy_gpu(l.nweights, -decay*batch, l.weights_gpu, 1, l.weight_updates_gpu, 1); + axpy_gpu(l.nweights, learning_rate/batch, l.weight_updates_gpu, 1, l.weights_gpu, 1); + scal_gpu(l.nweights, momentum, l.weight_updates_gpu, 1); + + axpy_gpu(l.n, learning_rate/batch, l.bias_updates_gpu, 1, l.biases_gpu, 1); + scal_gpu(l.n, momentum, l.bias_updates_gpu, 1); + + if(l.scales_gpu){ + axpy_gpu(l.n, learning_rate/batch, l.scale_updates_gpu, 1, l.scales_gpu, 1); + scal_gpu(l.n, momentum, l.scale_updates_gpu, 1); + } + } + if(l.clip){ + constrain_gpu(l.nweights, l.clip, l.weights_gpu, 1); + } +} + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_layer.c" new file mode 100644 index 00000000..1fb58b09 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_layer.c" @@ -0,0 +1,622 @@ +#include "convolutional_layer.h" +#include "utils.h" +#include "batchnorm_layer.h" +#include "im2col.h" +#include "col2im.h" +#include "blas.h" +#include "gemm.h" +#include +#include + +#ifdef AI2 +#include "xnor_layer.h" +#endif + +void swap_binary(convolutional_layer *l) +{ + float *swap = l->weights; + l->weights = l->binary_weights; + l->binary_weights = swap; + +#ifdef GPU + swap = l->weights_gpu; + l->weights_gpu = l->binary_weights_gpu; + l->binary_weights_gpu = swap; +#endif +} + +void binarize_weights(float *weights, int n, int size, float *binary) +{ + int i, f; + for(f = 0; f < n; ++f){ + float mean = 0; + for(i = 0; i < size; ++i){ + mean += fabs(weights[f*size + i]); + } + mean = mean / size; + for(i = 0; i < size; ++i){ + binary[f*size + i] = (weights[f*size + i] > 0) ? mean : -mean; + } + } +} + +void binarize_cpu(float *input, int n, float *binary) +{ + int i; + for(i = 0; i < n; ++i){ + binary[i] = (input[i] > 0) ? 1 : -1; + } +} + +void binarize_input(float *input, int n, int size, float *binary) +{ + int i, s; + for(s = 0; s < size; ++s){ + float mean = 0; + for(i = 0; i < n; ++i){ + mean += fabs(input[i*size + s]); + } + mean = mean / n; + for(i = 0; i < n; ++i){ + binary[i*size + s] = (input[i*size + s] > 0) ? mean : -mean; + } + } +} + +int convolutional_out_height(convolutional_layer l) +{ + return (l.h + 2*l.pad - l.size) / l.stride + 1; +} + +int convolutional_out_width(convolutional_layer l) +{ + return (l.w + 2*l.pad - l.size) / l.stride + 1; +} + +image get_convolutional_image(convolutional_layer l) +{ + return float_to_image(l.out_w,l.out_h,l.out_c,l.output); +} + +image get_convolutional_delta(convolutional_layer l) +{ + return float_to_image(l.out_w,l.out_h,l.out_c,l.delta); +} + +static size_t get_workspace_size(layer l){ +#ifdef CUDNN + if(gpu_index >= 0){ + size_t most = 0; + size_t s = 0; + cudnnGetConvolutionForwardWorkspaceSize(cudnn_handle(), + l.srcTensorDesc, + l.weightDesc, + l.convDesc, + l.dstTensorDesc, + l.fw_algo, + &s); + if (s > most) most = s; + cudnnGetConvolutionBackwardFilterWorkspaceSize(cudnn_handle(), + l.srcTensorDesc, + l.ddstTensorDesc, + l.convDesc, + l.dweightDesc, + l.bf_algo, + &s); + if (s > most) most = s; + cudnnGetConvolutionBackwardDataWorkspaceSize(cudnn_handle(), + l.weightDesc, + l.ddstTensorDesc, + l.convDesc, + l.dsrcTensorDesc, + l.bd_algo, + &s); + if (s > most) most = s; + return most; + } +#endif + return (size_t)l.out_h*l.out_w*l.size*l.size*l.c/l.groups*sizeof(float); +} + +#ifdef GPU +#ifdef CUDNN +void cudnn_convolutional_setup(layer *l) +{ + cudnnSetTensor4dDescriptor(l->dsrcTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l->batch, l->c, l->h, l->w); + cudnnSetTensor4dDescriptor(l->ddstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l->batch, l->out_c, l->out_h, l->out_w); + + cudnnSetTensor4dDescriptor(l->srcTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l->batch, l->c, l->h, l->w); + cudnnSetTensor4dDescriptor(l->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l->batch, l->out_c, l->out_h, l->out_w); + cudnnSetTensor4dDescriptor(l->normTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l->out_c, 1, 1); + + cudnnSetFilter4dDescriptor(l->dweightDesc, CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, l->n, l->c/l->groups, l->size, l->size); + cudnnSetFilter4dDescriptor(l->weightDesc, CUDNN_DATA_FLOAT, CUDNN_TENSOR_NCHW, l->n, l->c/l->groups, l->size, l->size); + #if CUDNN_MAJOR >= 6 + cudnnSetConvolution2dDescriptor(l->convDesc, l->pad, l->pad, l->stride, l->stride, 1, 1, CUDNN_CROSS_CORRELATION, CUDNN_DATA_FLOAT); + #else + cudnnSetConvolution2dDescriptor(l->convDesc, l->pad, l->pad, l->stride, l->stride, 1, 1, CUDNN_CROSS_CORRELATION); + #endif + + #if CUDNN_MAJOR >= 7 + cudnnSetConvolutionGroupCount(l->convDesc, l->groups); + #else + if(l->groups > 1){ + error("CUDNN < 7 doesn't support groups, please upgrade!"); + } + #endif + + cudnnGetConvolutionForwardAlgorithm(cudnn_handle(), + l->srcTensorDesc, + l->weightDesc, + l->convDesc, + l->dstTensorDesc, + CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT, + 2000000000, + &l->fw_algo); + cudnnGetConvolutionBackwardDataAlgorithm(cudnn_handle(), + l->weightDesc, + l->ddstTensorDesc, + l->convDesc, + l->dsrcTensorDesc, + CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT, + 2000000000, + &l->bd_algo); + cudnnGetConvolutionBackwardFilterAlgorithm(cudnn_handle(), + l->srcTensorDesc, + l->ddstTensorDesc, + l->convDesc, + l->dweightDesc, + CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT, + 2000000000, + &l->bf_algo); +} +#endif +#endif + +convolutional_layer make_convolutional_layer(int batch, int h, int w, int c, int n, int groups, int size, int stride, int padding, ACTIVATION activation, int batch_normalize, int binary, int xnor, int adam) +{ + int i; + convolutional_layer l = {0}; + l.type = CONVOLUTIONAL; + + l.groups = groups; + l.h = h; + l.w = w; + l.c = c; + l.n = n; + l.binary = binary; + l.xnor = xnor; + l.batch = batch; + l.stride = stride; + l.size = size; + l.pad = padding; + l.batch_normalize = batch_normalize; + + l.weights = calloc(c/groups*n*size*size, sizeof(float)); + l.weight_updates = calloc(c/groups*n*size*size, sizeof(float)); + + l.biases = calloc(n, sizeof(float)); + l.bias_updates = calloc(n, sizeof(float)); + + l.nweights = c/groups*n*size*size; + l.nbiases = n; + + // float scale = 1./sqrt(size*size*c); + float scale = sqrt(2./(size*size*c/l.groups)); + //printf("convscale %f\n", scale); + //scale = .02; + //for(i = 0; i < c*n*size*size; ++i) l.weights[i] = scale*rand_uniform(-1, 1); + for(i = 0; i < l.nweights; ++i) l.weights[i] = scale*rand_normal(); + int out_w = convolutional_out_width(l); + int out_h = convolutional_out_height(l); + l.out_h = out_h; + l.out_w = out_w; + l.out_c = n; + l.outputs = l.out_h * l.out_w * l.out_c; + l.inputs = l.w * l.h * l.c; + + l.output = calloc(l.batch*l.outputs, sizeof(float)); + l.delta = calloc(l.batch*l.outputs, sizeof(float)); + + l.forward = forward_convolutional_layer; + l.backward = backward_convolutional_layer; + l.update = update_convolutional_layer; + if(binary){ + l.binary_weights = calloc(l.nweights, sizeof(float)); + l.cweights = calloc(l.nweights, sizeof(char)); + l.scales = calloc(n, sizeof(float)); + } + if(xnor){ + l.binary_weights = calloc(l.nweights, sizeof(float)); + l.binary_input = calloc(l.inputs*l.batch, sizeof(float)); + } + + if(batch_normalize){ + l.scales = calloc(n, sizeof(float)); + l.scale_updates = calloc(n, sizeof(float)); + for(i = 0; i < n; ++i){ + l.scales[i] = 1; + } + + l.mean = calloc(n, sizeof(float)); + l.variance = calloc(n, sizeof(float)); + + l.mean_delta = calloc(n, sizeof(float)); + l.variance_delta = calloc(n, sizeof(float)); + + l.rolling_mean = calloc(n, sizeof(float)); + l.rolling_variance = calloc(n, sizeof(float)); + l.x = calloc(l.batch*l.outputs, sizeof(float)); + l.x_norm = calloc(l.batch*l.outputs, sizeof(float)); + } + if(adam){ + l.m = calloc(l.nweights, sizeof(float)); + l.v = calloc(l.nweights, sizeof(float)); + l.bias_m = calloc(n, sizeof(float)); + l.scale_m = calloc(n, sizeof(float)); + l.bias_v = calloc(n, sizeof(float)); + l.scale_v = calloc(n, sizeof(float)); + } + +#ifdef GPU + l.forward_gpu = forward_convolutional_layer_gpu; + l.backward_gpu = backward_convolutional_layer_gpu; + l.update_gpu = update_convolutional_layer_gpu; + + if(gpu_index >= 0){ + if (adam) { + l.m_gpu = cuda_make_array(l.m, l.nweights); + l.v_gpu = cuda_make_array(l.v, l.nweights); + l.bias_m_gpu = cuda_make_array(l.bias_m, n); + l.bias_v_gpu = cuda_make_array(l.bias_v, n); + l.scale_m_gpu = cuda_make_array(l.scale_m, n); + l.scale_v_gpu = cuda_make_array(l.scale_v, n); + } + + l.weights_gpu = cuda_make_array(l.weights, l.nweights); + l.weight_updates_gpu = cuda_make_array(l.weight_updates, l.nweights); + + l.biases_gpu = cuda_make_array(l.biases, n); + l.bias_updates_gpu = cuda_make_array(l.bias_updates, n); + + l.delta_gpu = cuda_make_array(l.delta, l.batch*out_h*out_w*n); + l.output_gpu = cuda_make_array(l.output, l.batch*out_h*out_w*n); + + if(binary){ + l.binary_weights_gpu = cuda_make_array(l.weights, l.nweights); + } + if(xnor){ + l.binary_weights_gpu = cuda_make_array(l.weights, l.nweights); + l.binary_input_gpu = cuda_make_array(0, l.inputs*l.batch); + } + + if(batch_normalize){ + l.mean_gpu = cuda_make_array(l.mean, n); + l.variance_gpu = cuda_make_array(l.variance, n); + + l.rolling_mean_gpu = cuda_make_array(l.mean, n); + l.rolling_variance_gpu = cuda_make_array(l.variance, n); + + l.mean_delta_gpu = cuda_make_array(l.mean, n); + l.variance_delta_gpu = cuda_make_array(l.variance, n); + + l.scales_gpu = cuda_make_array(l.scales, n); + l.scale_updates_gpu = cuda_make_array(l.scale_updates, n); + + l.x_gpu = cuda_make_array(l.output, l.batch*out_h*out_w*n); + l.x_norm_gpu = cuda_make_array(l.output, l.batch*out_h*out_w*n); + } +#ifdef CUDNN + cudnnCreateTensorDescriptor(&l.normTensorDesc); + cudnnCreateTensorDescriptor(&l.srcTensorDesc); + cudnnCreateTensorDescriptor(&l.dstTensorDesc); + cudnnCreateFilterDescriptor(&l.weightDesc); + cudnnCreateTensorDescriptor(&l.dsrcTensorDesc); + cudnnCreateTensorDescriptor(&l.ddstTensorDesc); + cudnnCreateFilterDescriptor(&l.dweightDesc); + cudnnCreateConvolutionDescriptor(&l.convDesc); + cudnn_convolutional_setup(&l); +#endif + } +#endif + l.workspace_size = get_workspace_size(l); + l.activation = activation; + + fprintf(stderr, "conv %5d %2d x%2d /%2d %4d x%4d x%4d -> %4d x%4d x%4d %5.3f BFLOPs\n", n, size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c, (2.0 * l.n * l.size*l.size*l.c/l.groups * l.out_h*l.out_w)/1000000000.); + + return l; +} + +void denormalize_convolutional_layer(convolutional_layer l) +{ + int i, j; + for(i = 0; i < l.n; ++i){ + float scale = l.scales[i]/sqrt(l.rolling_variance[i] + .00001); + for(j = 0; j < l.c/l.groups*l.size*l.size; ++j){ + l.weights[i*l.c/l.groups*l.size*l.size + j] *= scale; + } + l.biases[i] -= l.rolling_mean[i] * scale; + l.scales[i] = 1; + l.rolling_mean[i] = 0; + l.rolling_variance[i] = 1; + } +} + +/* +void test_convolutional_layer() +{ + convolutional_layer l = make_convolutional_layer(1, 5, 5, 3, 2, 5, 2, 1, LEAKY, 1, 0, 0, 0); + l.batch_normalize = 1; + float data[] = {1,1,1,1,1, + 1,1,1,1,1, + 1,1,1,1,1, + 1,1,1,1,1, + 1,1,1,1,1, + 2,2,2,2,2, + 2,2,2,2,2, + 2,2,2,2,2, + 2,2,2,2,2, + 2,2,2,2,2, + 3,3,3,3,3, + 3,3,3,3,3, + 3,3,3,3,3, + 3,3,3,3,3, + 3,3,3,3,3}; + //net.input = data; + //forward_convolutional_layer(l); +} +*/ + +void resize_convolutional_layer(convolutional_layer *l, int w, int h) +{ + l->w = w; + l->h = h; + int out_w = convolutional_out_width(*l); + int out_h = convolutional_out_height(*l); + + l->out_w = out_w; + l->out_h = out_h; + + l->outputs = l->out_h * l->out_w * l->out_c; + l->inputs = l->w * l->h * l->c; + + l->output = realloc(l->output, l->batch*l->outputs*sizeof(float)); + l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float)); + if(l->batch_normalize){ + l->x = realloc(l->x, l->batch*l->outputs*sizeof(float)); + l->x_norm = realloc(l->x_norm, l->batch*l->outputs*sizeof(float)); + } + +#ifdef GPU + cuda_free(l->delta_gpu); + cuda_free(l->output_gpu); + + l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs); + l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs); + + if(l->batch_normalize){ + cuda_free(l->x_gpu); + cuda_free(l->x_norm_gpu); + + l->x_gpu = cuda_make_array(l->output, l->batch*l->outputs); + l->x_norm_gpu = cuda_make_array(l->output, l->batch*l->outputs); + } +#ifdef CUDNN + cudnn_convolutional_setup(l); +#endif +#endif + l->workspace_size = get_workspace_size(*l); +} + +void add_bias(float *output, float *biases, int batch, int n, int size) +{ + int i,j,b; + for(b = 0; b < batch; ++b){ + for(i = 0; i < n; ++i){ + for(j = 0; j < size; ++j){ + output[(b*n + i)*size + j] += biases[i]; + } + } + } +} + +void scale_bias(float *output, float *scales, int batch, int n, int size) +{ + int i,j,b; + for(b = 0; b < batch; ++b){ + for(i = 0; i < n; ++i){ + for(j = 0; j < size; ++j){ + output[(b*n + i)*size + j] *= scales[i]; + } + } + } +} + +void backward_bias(float *bias_updates, float *delta, int batch, int n, int size) +{ + int i,b; + for(b = 0; b < batch; ++b){ + for(i = 0; i < n; ++i){ + bias_updates[i] += sum_array(delta+size*(i+b*n), size); + } + } +} + +void forward_convolutional_layer(convolutional_layer l, network net) +{ + int i, j; + + fill_cpu(l.outputs*l.batch, 0, l.output, 1); + + if(l.xnor){ + binarize_weights(l.weights, l.n, l.c/l.groups*l.size*l.size, l.binary_weights); + swap_binary(&l); + binarize_cpu(net.input, l.c*l.h*l.w*l.batch, l.binary_input); + net.input = l.binary_input; + } + + int m = l.n/l.groups; + int k = l.size*l.size*l.c/l.groups; + int n = l.out_w*l.out_h; + for(i = 0; i < l.batch; ++i){ + for(j = 0; j < l.groups; ++j){ + float *a = l.weights + j*l.nweights/l.groups; + float *b = net.workspace; + float *c = l.output + (i*l.groups + j)*n*m; + float *im = net.input + (i*l.groups + j)*l.c/l.groups*l.h*l.w; + + if (l.size == 1) { + b = im; + } else { + im2col_cpu(im, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, b); + } + gemm(0,0,m,n,k,1,a,k,b,n,1,c,n); + } + } + + if(l.batch_normalize){ + forward_batchnorm_layer(l, net); + } else { + add_bias(l.output, l.biases, l.batch, l.n, l.out_h*l.out_w); + } + + activate_array(l.output, l.outputs*l.batch, l.activation); + if(l.binary || l.xnor) swap_binary(&l); +} + +void backward_convolutional_layer(convolutional_layer l, network net) +{ + int i, j; + int m = l.n/l.groups; + int n = l.size*l.size*l.c/l.groups; + int k = l.out_w*l.out_h; + + gradient_array(l.output, l.outputs*l.batch, l.activation, l.delta); + + if(l.batch_normalize){ + backward_batchnorm_layer(l, net); + } else { + backward_bias(l.bias_updates, l.delta, l.batch, l.n, k); + } + + for(i = 0; i < l.batch; ++i){ + for(j = 0; j < l.groups; ++j){ + float *a = l.delta + (i*l.groups + j)*m*k; + float *b = net.workspace; + float *c = l.weight_updates + j*l.nweights/l.groups; + + float *im = net.input + (i*l.groups + j)*l.c/l.groups*l.h*l.w; + float *imd = net.delta + (i*l.groups + j)*l.c/l.groups*l.h*l.w; + + if(l.size == 1){ + b = im; + } else { + im2col_cpu(im, l.c/l.groups, l.h, l.w, + l.size, l.stride, l.pad, b); + } + + gemm(0,1,m,n,k,1,a,k,b,k,1,c,n); + + if (net.delta) { + a = l.weights + j*l.nweights/l.groups; + b = l.delta + (i*l.groups + j)*m*k; + c = net.workspace; + if (l.size == 1) { + c = imd; + } + + gemm(1,0,n,k,m,1,a,n,b,k,0,c,k); + + if (l.size != 1) { + col2im_cpu(net.workspace, l.c/l.groups, l.h, l.w, l.size, l.stride, l.pad, imd); + } + } + } + } +} + +void update_convolutional_layer(convolutional_layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + + axpy_cpu(l.n, learning_rate/batch, l.bias_updates, 1, l.biases, 1); + scal_cpu(l.n, momentum, l.bias_updates, 1); + + if(l.scales){ + axpy_cpu(l.n, learning_rate/batch, l.scale_updates, 1, l.scales, 1); + scal_cpu(l.n, momentum, l.scale_updates, 1); + } + + axpy_cpu(l.nweights, -decay*batch, l.weights, 1, l.weight_updates, 1); + axpy_cpu(l.nweights, learning_rate/batch, l.weight_updates, 1, l.weights, 1); + scal_cpu(l.nweights, momentum, l.weight_updates, 1); +} + + +image get_convolutional_weight(convolutional_layer l, int i) +{ + int h = l.size; + int w = l.size; + int c = l.c/l.groups; + return float_to_image(w,h,c,l.weights+i*h*w*c); +} + +void rgbgr_weights(convolutional_layer l) +{ + int i; + for(i = 0; i < l.n; ++i){ + image im = get_convolutional_weight(l, i); + if (im.c == 3) { + rgbgr_image(im); + } + } +} + +void rescale_weights(convolutional_layer l, float scale, float trans) +{ + int i; + for(i = 0; i < l.n; ++i){ + image im = get_convolutional_weight(l, i); + if (im.c == 3) { + scale_image(im, scale); + float sum = sum_array(im.data, im.w*im.h*im.c); + l.biases[i] += sum*trans; + } + } +} + +image *get_weights(convolutional_layer l) +{ + image *weights = calloc(l.n, sizeof(image)); + int i; + for(i = 0; i < l.n; ++i){ + weights[i] = copy_image(get_convolutional_weight(l, i)); + normalize_image(weights[i]); + /* + char buff[256]; + sprintf(buff, "filter%d", i); + save_image(weights[i], buff); + */ + } + //error("hey"); + return weights; +} + +image *visualize_convolutional_layer(convolutional_layer l, char *window, image *prev_weights) +{ + image *single_weights = get_weights(l); + show_images(single_weights, l.n, window); + + image delta = get_convolutional_image(l); + image dc = collapse_image_layers(delta, 1); + char buff[256]; + sprintf(buff, "%s: Output", window); + //show_image(dc, buff); + //save_image(dc, buff); + free_image(dc); + return single_weights; +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_layer.h" new file mode 100644 index 00000000..6c261f5f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/convolutional_layer.h" @@ -0,0 +1,50 @@ +#ifndef CONVOLUTIONAL_LAYER_H +#define CONVOLUTIONAL_LAYER_H + +#include "cuda.h" +#include "image.h" +#include "activations.h" +#include "layer.h" +#include "network.h" + +typedef layer convolutional_layer; + +#ifdef GPU +void forward_convolutional_layer_gpu(convolutional_layer layer, network net); +void backward_convolutional_layer_gpu(convolutional_layer layer, network net); +void update_convolutional_layer_gpu(convolutional_layer layer, update_args a); + +void push_convolutional_layer(convolutional_layer layer); +void pull_convolutional_layer(convolutional_layer layer); + +void add_bias_gpu(float *output, float *biases, int batch, int n, int size); +void backward_bias_gpu(float *bias_updates, float *delta, int batch, int n, int size); +void adam_update_gpu(float *w, float *d, float *m, float *v, float B1, float B2, float eps, float decay, float rate, int n, int batch, int t); +#ifdef CUDNN +void cudnn_convolutional_setup(layer *l); +#endif +#endif + +convolutional_layer make_convolutional_layer(int batch, int h, int w, int c, int n, int groups, int size, int stride, int padding, ACTIVATION activation, int batch_normalize, int binary, int xnor, int adam); +void resize_convolutional_layer(convolutional_layer *layer, int w, int h); +void forward_convolutional_layer(const convolutional_layer layer, network net); +void update_convolutional_layer(convolutional_layer layer, update_args a); +image *visualize_convolutional_layer(convolutional_layer layer, char *window, image *prev_weights); +void binarize_weights(float *weights, int n, int size, float *binary); +void swap_binary(convolutional_layer *l); +void binarize_weights2(float *weights, int n, int size, char *binary, float *scales); + +void backward_convolutional_layer(convolutional_layer layer, network net); + +void add_bias(float *output, float *biases, int batch, int n, int size); +void backward_bias(float *bias_updates, float *delta, int batch, int n, int size); + +image get_convolutional_image(convolutional_layer layer); +image get_convolutional_delta(convolutional_layer layer); +image get_convolutional_weight(convolutional_layer layer, int i); + +int convolutional_out_height(convolutional_layer layer); +int convolutional_out_width(convolutional_layer layer); + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cost_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cost_layer.c" new file mode 100644 index 00000000..2138ff26 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cost_layer.c" @@ -0,0 +1,176 @@ +#include "cost_layer.h" +#include "utils.h" +#include "cuda.h" +#include "blas.h" +#include +#include +#include +#include + +COST_TYPE get_cost_type(char *s) +{ + if (strcmp(s, "seg")==0) return SEG; + if (strcmp(s, "sse")==0) return SSE; + if (strcmp(s, "masked")==0) return MASKED; + if (strcmp(s, "smooth")==0) return SMOOTH; + if (strcmp(s, "L1")==0) return L1; + if (strcmp(s, "wgan")==0) return WGAN; + fprintf(stderr, "Couldn't find cost type %s, going with SSE\n", s); + return SSE; +} + +char *get_cost_string(COST_TYPE a) +{ + switch(a){ + case SEG: + return "seg"; + case SSE: + return "sse"; + case MASKED: + return "masked"; + case SMOOTH: + return "smooth"; + case L1: + return "L1"; + case WGAN: + return "wgan"; + } + return "sse"; +} + +cost_layer make_cost_layer(int batch, int inputs, COST_TYPE cost_type, float scale) +{ + fprintf(stderr, "cost %4d\n", inputs); + cost_layer l = {0}; + l.type = COST; + + l.scale = scale; + l.batch = batch; + l.inputs = inputs; + l.outputs = inputs; + l.cost_type = cost_type; + l.delta = calloc(inputs*batch, sizeof(float)); + l.output = calloc(inputs*batch, sizeof(float)); + l.cost = calloc(1, sizeof(float)); + + l.forward = forward_cost_layer; + l.backward = backward_cost_layer; + #ifdef GPU + l.forward_gpu = forward_cost_layer_gpu; + l.backward_gpu = backward_cost_layer_gpu; + + l.delta_gpu = cuda_make_array(l.output, inputs*batch); + l.output_gpu = cuda_make_array(l.delta, inputs*batch); + #endif + return l; +} + +void resize_cost_layer(cost_layer *l, int inputs) +{ + l->inputs = inputs; + l->outputs = inputs; + l->delta = realloc(l->delta, inputs*l->batch*sizeof(float)); + l->output = realloc(l->output, inputs*l->batch*sizeof(float)); +#ifdef GPU + cuda_free(l->delta_gpu); + cuda_free(l->output_gpu); + l->delta_gpu = cuda_make_array(l->delta, inputs*l->batch); + l->output_gpu = cuda_make_array(l->output, inputs*l->batch); +#endif +} + +void forward_cost_layer(cost_layer l, network net) +{ + if (!net.truth) return; + if(l.cost_type == MASKED){ + int i; + for(i = 0; i < l.batch*l.inputs; ++i){ + if(net.truth[i] == SECRET_NUM) net.input[i] = SECRET_NUM; + } + } + if(l.cost_type == SMOOTH){ + smooth_l1_cpu(l.batch*l.inputs, net.input, net.truth, l.delta, l.output); + }else if(l.cost_type == L1){ + l1_cpu(l.batch*l.inputs, net.input, net.truth, l.delta, l.output); + } else { + l2_cpu(l.batch*l.inputs, net.input, net.truth, l.delta, l.output); + } + l.cost[0] = sum_array(l.output, l.batch*l.inputs); +} + +void backward_cost_layer(const cost_layer l, network net) +{ + axpy_cpu(l.batch*l.inputs, l.scale, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void pull_cost_layer(cost_layer l) +{ + cuda_pull_array(l.delta_gpu, l.delta, l.batch*l.inputs); +} + +void push_cost_layer(cost_layer l) +{ + cuda_push_array(l.delta_gpu, l.delta, l.batch*l.inputs); +} + +int float_abs_compare (const void * a, const void * b) +{ + float fa = *(const float*) a; + if(fa < 0) fa = -fa; + float fb = *(const float*) b; + if(fb < 0) fb = -fb; + return (fa > fb) - (fa < fb); +} + +void forward_cost_layer_gpu(cost_layer l, network net) +{ + if (!net.truth) return; + if(l.smooth){ + scal_gpu(l.batch*l.inputs, (1-l.smooth), net.truth_gpu, 1); + add_gpu(l.batch*l.inputs, l.smooth * 1./l.inputs, net.truth_gpu, 1); + } + + if(l.cost_type == SMOOTH){ + smooth_l1_gpu(l.batch*l.inputs, net.input_gpu, net.truth_gpu, l.delta_gpu, l.output_gpu); + } else if (l.cost_type == L1){ + l1_gpu(l.batch*l.inputs, net.input_gpu, net.truth_gpu, l.delta_gpu, l.output_gpu); + } else if (l.cost_type == WGAN){ + wgan_gpu(l.batch*l.inputs, net.input_gpu, net.truth_gpu, l.delta_gpu, l.output_gpu); + } else { + l2_gpu(l.batch*l.inputs, net.input_gpu, net.truth_gpu, l.delta_gpu, l.output_gpu); + } + + if (l.cost_type == SEG && l.noobject_scale != 1) { + scale_mask_gpu(l.batch*l.inputs, l.delta_gpu, 0, net.truth_gpu, l.noobject_scale); + scale_mask_gpu(l.batch*l.inputs, l.output_gpu, 0, net.truth_gpu, l.noobject_scale); + } + if (l.cost_type == MASKED) { + mask_gpu(l.batch*l.inputs, net.delta_gpu, SECRET_NUM, net.truth_gpu, 0); + } + + if(l.ratio){ + cuda_pull_array(l.delta_gpu, l.delta, l.batch*l.inputs); + qsort(l.delta, l.batch*l.inputs, sizeof(float), float_abs_compare); + int n = (1-l.ratio) * l.batch*l.inputs; + float thresh = l.delta[n]; + thresh = 0; + printf("%f\n", thresh); + supp_gpu(l.batch*l.inputs, thresh, l.delta_gpu, 1); + } + + if(l.thresh){ + supp_gpu(l.batch*l.inputs, l.thresh*1./l.inputs, l.delta_gpu, 1); + } + + cuda_pull_array(l.output_gpu, l.output, l.batch*l.inputs); + l.cost[0] = sum_array(l.output, l.batch*l.inputs); +} + +void backward_cost_layer_gpu(const cost_layer l, network net) +{ + axpy_gpu(l.batch*l.inputs, l.scale, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cost_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cost_layer.h" new file mode 100644 index 00000000..ceb64de0 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cost_layer.h" @@ -0,0 +1,20 @@ +#ifndef COST_LAYER_H +#define COST_LAYER_H +#include "layer.h" +#include "network.h" + +typedef layer cost_layer; + +COST_TYPE get_cost_type(char *s); +char *get_cost_string(COST_TYPE a); +cost_layer make_cost_layer(int batch, int inputs, COST_TYPE type, float scale); +void forward_cost_layer(const cost_layer l, network net); +void backward_cost_layer(const cost_layer l, network net); +void resize_cost_layer(cost_layer *l, int inputs); + +#ifdef GPU +void forward_cost_layer_gpu(cost_layer l, network net); +void backward_cost_layer_gpu(const cost_layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crnn_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crnn_layer.c" new file mode 100644 index 00000000..7dd29f62 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crnn_layer.c" @@ -0,0 +1,283 @@ +#include "crnn_layer.h" +#include "convolutional_layer.h" +#include "utils.h" +#include "cuda.h" +#include "blas.h" +#include "gemm.h" + +#include +#include +#include +#include + +static void increment_layer(layer *l, int steps) +{ + int num = l->outputs*l->batch*steps; + l->output += num; + l->delta += num; + l->x += num; + l->x_norm += num; + +#ifdef GPU + l->output_gpu += num; + l->delta_gpu += num; + l->x_gpu += num; + l->x_norm_gpu += num; +#endif +} + +layer make_crnn_layer(int batch, int h, int w, int c, int hidden_filters, int output_filters, int steps, ACTIVATION activation, int batch_normalize) +{ + fprintf(stderr, "CRNN Layer: %d x %d x %d image, %d filters\n", h,w,c,output_filters); + batch = batch / steps; + layer l = {0}; + l.batch = batch; + l.type = CRNN; + l.steps = steps; + l.h = h; + l.w = w; + l.c = c; + l.out_h = h; + l.out_w = w; + l.out_c = output_filters; + l.inputs = h*w*c; + l.hidden = h * w * hidden_filters; + l.outputs = l.out_h * l.out_w * l.out_c; + + l.state = calloc(l.hidden*batch*(steps+1), sizeof(float)); + + l.input_layer = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.input_layer) = make_convolutional_layer(batch*steps, h, w, c, hidden_filters, 1, 3, 1, 1, activation, batch_normalize, 0, 0, 0); + l.input_layer->batch = batch; + + l.self_layer = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.self_layer) = make_convolutional_layer(batch*steps, h, w, hidden_filters, hidden_filters, 1, 3, 1, 1, activation, batch_normalize, 0, 0, 0); + l.self_layer->batch = batch; + + l.output_layer = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.output_layer) = make_convolutional_layer(batch*steps, h, w, hidden_filters, output_filters, 1, 3, 1, 1, activation, batch_normalize, 0, 0, 0); + l.output_layer->batch = batch; + + l.output = l.output_layer->output; + l.delta = l.output_layer->delta; + + l.forward = forward_crnn_layer; + l.backward = backward_crnn_layer; + l.update = update_crnn_layer; + +#ifdef GPU + l.forward_gpu = forward_crnn_layer_gpu; + l.backward_gpu = backward_crnn_layer_gpu; + l.update_gpu = update_crnn_layer_gpu; + + l.state_gpu = cuda_make_array(l.state, l.hidden*batch*(steps+1)); + l.output_gpu = l.output_layer->output_gpu; + l.delta_gpu = l.output_layer->delta_gpu; +#endif + + return l; +} + +void update_crnn_layer(layer l, update_args a) +{ + update_convolutional_layer(*(l.input_layer), a); + update_convolutional_layer(*(l.self_layer), a); + update_convolutional_layer(*(l.output_layer), a); +} + +void forward_crnn_layer(layer l, network net) +{ + network s = net; + s.train = net.train; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + + fill_cpu(l.outputs * l.batch * l.steps, 0, output_layer.delta, 1); + fill_cpu(l.hidden * l.batch * l.steps, 0, self_layer.delta, 1); + fill_cpu(l.hidden * l.batch * l.steps, 0, input_layer.delta, 1); + if(net.train) fill_cpu(l.hidden * l.batch, 0, l.state, 1); + + for (i = 0; i < l.steps; ++i) { + s.input = net.input; + forward_convolutional_layer(input_layer, s); + + s.input = l.state; + forward_convolutional_layer(self_layer, s); + + float *old_state = l.state; + if(net.train) l.state += l.hidden*l.batch; + if(l.shortcut){ + copy_cpu(l.hidden * l.batch, old_state, 1, l.state, 1); + }else{ + fill_cpu(l.hidden * l.batch, 0, l.state, 1); + } + axpy_cpu(l.hidden * l.batch, 1, input_layer.output, 1, l.state, 1); + axpy_cpu(l.hidden * l.batch, 1, self_layer.output, 1, l.state, 1); + + s.input = l.state; + forward_convolutional_layer(output_layer, s); + + net.input += l.inputs*l.batch; + increment_layer(&input_layer, 1); + increment_layer(&self_layer, 1); + increment_layer(&output_layer, 1); + } +} + +void backward_crnn_layer(layer l, network net) +{ + network s = net; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + + increment_layer(&input_layer, l.steps-1); + increment_layer(&self_layer, l.steps-1); + increment_layer(&output_layer, l.steps-1); + + l.state += l.hidden*l.batch*l.steps; + for (i = l.steps-1; i >= 0; --i) { + copy_cpu(l.hidden * l.batch, input_layer.output, 1, l.state, 1); + axpy_cpu(l.hidden * l.batch, 1, self_layer.output, 1, l.state, 1); + + s.input = l.state; + s.delta = self_layer.delta; + backward_convolutional_layer(output_layer, s); + + l.state -= l.hidden*l.batch; + /* + if(i > 0){ + copy_cpu(l.hidden * l.batch, input_layer.output - l.hidden*l.batch, 1, l.state, 1); + axpy_cpu(l.hidden * l.batch, 1, self_layer.output - l.hidden*l.batch, 1, l.state, 1); + }else{ + fill_cpu(l.hidden * l.batch, 0, l.state, 1); + } + */ + + s.input = l.state; + s.delta = self_layer.delta - l.hidden*l.batch; + if (i == 0) s.delta = 0; + backward_convolutional_layer(self_layer, s); + + copy_cpu(l.hidden*l.batch, self_layer.delta, 1, input_layer.delta, 1); + if (i > 0 && l.shortcut) axpy_cpu(l.hidden*l.batch, 1, self_layer.delta, 1, self_layer.delta - l.hidden*l.batch, 1); + s.input = net.input + i*l.inputs*l.batch; + if(net.delta) s.delta = net.delta + i*l.inputs*l.batch; + else s.delta = 0; + backward_convolutional_layer(input_layer, s); + + increment_layer(&input_layer, -1); + increment_layer(&self_layer, -1); + increment_layer(&output_layer, -1); + } +} + +#ifdef GPU + +void pull_crnn_layer(layer l) +{ + pull_convolutional_layer(*(l.input_layer)); + pull_convolutional_layer(*(l.self_layer)); + pull_convolutional_layer(*(l.output_layer)); +} + +void push_crnn_layer(layer l) +{ + push_convolutional_layer(*(l.input_layer)); + push_convolutional_layer(*(l.self_layer)); + push_convolutional_layer(*(l.output_layer)); +} + +void update_crnn_layer_gpu(layer l, update_args a) +{ + update_convolutional_layer_gpu(*(l.input_layer), a); + update_convolutional_layer_gpu(*(l.self_layer), a); + update_convolutional_layer_gpu(*(l.output_layer), a); +} + +void forward_crnn_layer_gpu(layer l, network net) +{ + network s = net; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + + fill_gpu(l.outputs * l.batch * l.steps, 0, output_layer.delta_gpu, 1); + fill_gpu(l.hidden * l.batch * l.steps, 0, self_layer.delta_gpu, 1); + fill_gpu(l.hidden * l.batch * l.steps, 0, input_layer.delta_gpu, 1); + if(net.train) fill_gpu(l.hidden * l.batch, 0, l.state_gpu, 1); + + for (i = 0; i < l.steps; ++i) { + s.input_gpu = net.input_gpu; + forward_convolutional_layer_gpu(input_layer, s); + + s.input_gpu = l.state_gpu; + forward_convolutional_layer_gpu(self_layer, s); + + float *old_state = l.state_gpu; + if(net.train) l.state_gpu += l.hidden*l.batch; + if(l.shortcut){ + copy_gpu(l.hidden * l.batch, old_state, 1, l.state_gpu, 1); + }else{ + fill_gpu(l.hidden * l.batch, 0, l.state_gpu, 1); + } + axpy_gpu(l.hidden * l.batch, 1, input_layer.output_gpu, 1, l.state_gpu, 1); + axpy_gpu(l.hidden * l.batch, 1, self_layer.output_gpu, 1, l.state_gpu, 1); + + s.input_gpu = l.state_gpu; + forward_convolutional_layer_gpu(output_layer, s); + + net.input_gpu += l.inputs*l.batch; + increment_layer(&input_layer, 1); + increment_layer(&self_layer, 1); + increment_layer(&output_layer, 1); + } +} + +void backward_crnn_layer_gpu(layer l, network net) +{ + network s = net; + s.train = net.train; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + increment_layer(&input_layer, l.steps - 1); + increment_layer(&self_layer, l.steps - 1); + increment_layer(&output_layer, l.steps - 1); + l.state_gpu += l.hidden*l.batch*l.steps; + for (i = l.steps-1; i >= 0; --i) { + copy_gpu(l.hidden * l.batch, input_layer.output_gpu, 1, l.state_gpu, 1); + axpy_gpu(l.hidden * l.batch, 1, self_layer.output_gpu, 1, l.state_gpu, 1); + + s.input_gpu = l.state_gpu; + s.delta_gpu = self_layer.delta_gpu; + backward_convolutional_layer_gpu(output_layer, s); + + l.state_gpu -= l.hidden*l.batch; + + s.input_gpu = l.state_gpu; + s.delta_gpu = self_layer.delta_gpu - l.hidden*l.batch; + if (i == 0) s.delta_gpu = 0; + backward_convolutional_layer_gpu(self_layer, s); + + copy_gpu(l.hidden*l.batch, self_layer.delta_gpu, 1, input_layer.delta_gpu, 1); + if (i > 0 && l.shortcut) axpy_gpu(l.hidden*l.batch, 1, self_layer.delta_gpu, 1, self_layer.delta_gpu - l.hidden*l.batch, 1); + s.input_gpu = net.input_gpu + i*l.inputs*l.batch; + if(net.delta_gpu) s.delta_gpu = net.delta_gpu + i*l.inputs*l.batch; + else s.delta_gpu = 0; + backward_convolutional_layer_gpu(input_layer, s); + + increment_layer(&input_layer, -1); + increment_layer(&self_layer, -1); + increment_layer(&output_layer, -1); + } +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crnn_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crnn_layer.h" new file mode 100644 index 00000000..515f3783 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crnn_layer.h" @@ -0,0 +1,24 @@ + +#ifndef CRNN_LAYER_H +#define CRNN_LAYER_H + +#include "activations.h" +#include "layer.h" +#include "network.h" + +layer make_crnn_layer(int batch, int h, int w, int c, int hidden_filters, int output_filters, int steps, ACTIVATION activation, int batch_normalize); + +void forward_crnn_layer(layer l, network net); +void backward_crnn_layer(layer l, network net); +void update_crnn_layer(layer l, update_args a); + +#ifdef GPU +void forward_crnn_layer_gpu(layer l, network net); +void backward_crnn_layer_gpu(layer l, network net); +void update_crnn_layer_gpu(layer l, update_args a); +void push_crnn_layer(layer l); +void pull_crnn_layer(layer l); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer.c" new file mode 100644 index 00000000..3b918529 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer.c" @@ -0,0 +1,103 @@ +#include "crop_layer.h" +#include "cuda.h" +#include + +image get_crop_image(crop_layer l) +{ + int h = l.out_h; + int w = l.out_w; + int c = l.out_c; + return float_to_image(w,h,c,l.output); +} + +void backward_crop_layer(const crop_layer l, network net){} +void backward_crop_layer_gpu(const crop_layer l, network net){} + +crop_layer make_crop_layer(int batch, int h, int w, int c, int crop_height, int crop_width, int flip, float angle, float saturation, float exposure) +{ + fprintf(stderr, "Crop Layer: %d x %d -> %d x %d x %d image\n", h,w,crop_height,crop_width,c); + crop_layer l = {0}; + l.type = CROP; + l.batch = batch; + l.h = h; + l.w = w; + l.c = c; + l.scale = (float)crop_height / h; + l.flip = flip; + l.angle = angle; + l.saturation = saturation; + l.exposure = exposure; + l.out_w = crop_width; + l.out_h = crop_height; + l.out_c = c; + l.inputs = l.w * l.h * l.c; + l.outputs = l.out_w * l.out_h * l.out_c; + l.output = calloc(l.outputs*batch, sizeof(float)); + l.forward = forward_crop_layer; + l.backward = backward_crop_layer; + + #ifdef GPU + l.forward_gpu = forward_crop_layer_gpu; + l.backward_gpu = backward_crop_layer_gpu; + l.output_gpu = cuda_make_array(l.output, l.outputs*batch); + l.rand_gpu = cuda_make_array(0, l.batch*8); + #endif + return l; +} + +void resize_crop_layer(layer *l, int w, int h) +{ + l->w = w; + l->h = h; + + l->out_w = l->scale*w; + l->out_h = l->scale*h; + + l->inputs = l->w * l->h * l->c; + l->outputs = l->out_h * l->out_w * l->out_c; + + l->output = realloc(l->output, l->batch*l->outputs*sizeof(float)); + #ifdef GPU + cuda_free(l->output_gpu); + l->output_gpu = cuda_make_array(l->output, l->outputs*l->batch); + #endif +} + + +void forward_crop_layer(const crop_layer l, network net) +{ + int i,j,c,b,row,col; + int index; + int count = 0; + int flip = (l.flip && rand()%2); + int dh = rand()%(l.h - l.out_h + 1); + int dw = rand()%(l.w - l.out_w + 1); + float scale = 2; + float trans = -1; + if(l.noadjust){ + scale = 1; + trans = 0; + } + if(!net.train){ + flip = 0; + dh = (l.h - l.out_h)/2; + dw = (l.w - l.out_w)/2; + } + for(b = 0; b < l.batch; ++b){ + for(c = 0; c < l.c; ++c){ + for(i = 0; i < l.out_h; ++i){ + for(j = 0; j < l.out_w; ++j){ + if(flip){ + col = l.w - dw - j - 1; + }else{ + col = j + dw; + } + row = i + dh; + index = col+l.w*(row+l.h*(c + l.c*b)); + l.output[count++] = net.input[index]*scale + trans; + } + } + } + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer.h" new file mode 100644 index 00000000..3b5883c4 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer.h" @@ -0,0 +1,20 @@ +#ifndef CROP_LAYER_H +#define CROP_LAYER_H + +#include "image.h" +#include "layer.h" +#include "network.h" + +typedef layer crop_layer; + +image get_crop_image(crop_layer l); +crop_layer make_crop_layer(int batch, int h, int w, int c, int crop_height, int crop_width, int flip, float angle, float saturation, float exposure); +void forward_crop_layer(const crop_layer l, network net); +void resize_crop_layer(layer *l, int w, int h); + +#ifdef GPU +void forward_crop_layer_gpu(crop_layer l, network net); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer_kernels.cu" new file mode 100644 index 00000000..b5b9f554 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/crop_layer_kernels.cu" @@ -0,0 +1,225 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "crop_layer.h" +#include "utils.h" +#include "cuda.h" +#include "image.h" +} + +__device__ float get_pixel_kernel(float *image, int w, int h, int x, int y, int c) +{ + if(x < 0 || x >= w || y < 0 || y >= h) return 0; + return image[x + w*(y + c*h)]; +} + +__device__ float3 rgb_to_hsv_kernel(float3 rgb) +{ + float r = rgb.x; + float g = rgb.y; + float b = rgb.z; + + float h, s, v; + float max = (r > g) ? ( (r > b) ? r : b) : ( (g > b) ? g : b); + float min = (r < g) ? ( (r < b) ? r : b) : ( (g < b) ? g : b); + float delta = max - min; + v = max; + if(max == 0){ + s = 0; + h = -1; + }else{ + s = delta/max; + if(r == max){ + h = (g - b) / delta; + } else if (g == max) { + h = 2 + (b - r) / delta; + } else { + h = 4 + (r - g) / delta; + } + if (h < 0) h += 6; + } + return make_float3(h, s, v); +} + +__device__ float3 hsv_to_rgb_kernel(float3 hsv) +{ + float h = hsv.x; + float s = hsv.y; + float v = hsv.z; + + float r, g, b; + float f, p, q, t; + + if (s == 0) { + r = g = b = v; + } else { + int index = (int) floorf(h); + f = h - index; + p = v*(1-s); + q = v*(1-s*f); + t = v*(1-s*(1-f)); + if(index == 0){ + r = v; g = t; b = p; + } else if(index == 1){ + r = q; g = v; b = p; + } else if(index == 2){ + r = p; g = v; b = t; + } else if(index == 3){ + r = p; g = q; b = v; + } else if(index == 4){ + r = t; g = p; b = v; + } else { + r = v; g = p; b = q; + } + } + r = (r < 0) ? 0 : ((r > 1) ? 1 : r); + g = (g < 0) ? 0 : ((g > 1) ? 1 : g); + b = (b < 0) ? 0 : ((b > 1) ? 1 : b); + return make_float3(r, g, b); +} + +__device__ float bilinear_interpolate_kernel(float *image, int w, int h, float x, float y, int c) +{ + int ix = (int) floorf(x); + int iy = (int) floorf(y); + + float dx = x - ix; + float dy = y - iy; + + float val = (1-dy) * (1-dx) * get_pixel_kernel(image, w, h, ix, iy, c) + + dy * (1-dx) * get_pixel_kernel(image, w, h, ix, iy+1, c) + + (1-dy) * dx * get_pixel_kernel(image, w, h, ix+1, iy, c) + + dy * dx * get_pixel_kernel(image, w, h, ix+1, iy+1, c); + return val; +} + +__global__ void levels_image_kernel(float *image, float *rand, int batch, int w, int h, int train, float saturation, float exposure, float translate, float scale, float shift) +{ + int size = batch * w * h; + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= size) return; + int x = id % w; + id /= w; + int y = id % h; + id /= h; + float rshift = rand[0]; + float gshift = rand[1]; + float bshift = rand[2]; + float r0 = rand[8*id + 0]; + float r1 = rand[8*id + 1]; + float r2 = rand[8*id + 2]; + float r3 = rand[8*id + 3]; + + saturation = r0*(saturation - 1) + 1; + saturation = (r1 > .5f) ? 1.f/saturation : saturation; + exposure = r2*(exposure - 1) + 1; + exposure = (r3 > .5f) ? 1.f/exposure : exposure; + + size_t offset = id * h * w * 3; + image += offset; + float r = image[x + w*(y + h*0)]; + float g = image[x + w*(y + h*1)]; + float b = image[x + w*(y + h*2)]; + float3 rgb = make_float3(r,g,b); + if(train){ + float3 hsv = rgb_to_hsv_kernel(rgb); + hsv.y *= saturation; + hsv.z *= exposure; + rgb = hsv_to_rgb_kernel(hsv); + } else { + shift = 0; + } + image[x + w*(y + h*0)] = rgb.x*scale + translate + (rshift - .5f)*shift; + image[x + w*(y + h*1)] = rgb.y*scale + translate + (gshift - .5f)*shift; + image[x + w*(y + h*2)] = rgb.z*scale + translate + (bshift - .5f)*shift; +} + +__global__ void forward_crop_layer_kernel(float *input, float *rand, int size, int c, int h, int w, int crop_height, int crop_width, int train, int flip, float angle, float *output) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= size) return; + + float cx = w/2.f; + float cy = h/2.f; + + int count = id; + int j = id % crop_width; + id /= crop_width; + int i = id % crop_height; + id /= crop_height; + int k = id % c; + id /= c; + int b = id; + + float r4 = rand[8*b + 4]; + float r5 = rand[8*b + 5]; + float r6 = rand[8*b + 6]; + float r7 = rand[8*b + 7]; + + float dw = (w - crop_width)*r4; + float dh = (h - crop_height)*r5; + flip = (flip && (r6 > .5f)); + angle = 2*angle*r7 - angle; + if(!train){ + dw = (w - crop_width)/2.f; + dh = (h - crop_height)/2.f; + flip = 0; + angle = 0; + } + + input += w*h*c*b; + + float x = (flip) ? w - dw - j - 1 : j + dw; + float y = i + dh; + + float rx = cosf(angle)*(x-cx) - sinf(angle)*(y-cy) + cx; + float ry = sinf(angle)*(x-cx) + cosf(angle)*(y-cy) + cy; + + output[count] = bilinear_interpolate_kernel(input, w, h, rx, ry, k); +} + +extern "C" void forward_crop_layer_gpu(crop_layer layer, network net) +{ + cuda_random(layer.rand_gpu, layer.batch*8); + + float radians = layer.angle*3.14159265f/180.f; + + float scale = 2; + float translate = -1; + if(layer.noadjust){ + scale = 1; + translate = 0; + } + + int size = layer.batch * layer.w * layer.h; + + levels_image_kernel<<>>(net.input_gpu, layer.rand_gpu, layer.batch, layer.w, layer.h, net.train, layer.saturation, layer.exposure, translate, scale, layer.shift); + check_error(cudaPeekAtLastError()); + + size = layer.batch*layer.c*layer.out_w*layer.out_h; + + forward_crop_layer_kernel<<>>(net.input_gpu, layer.rand_gpu, size, layer.c, layer.h, layer.w, layer.out_h, layer.out_w, net.train, layer.flip, radians, layer.output_gpu); + check_error(cudaPeekAtLastError()); + +/* + cuda_pull_array(layer.output_gpu, layer.output, size); + image im = float_to_image(layer.crop_width, layer.crop_height, layer.c, layer.output + 0*(size/layer.batch)); + image im2 = float_to_image(layer.crop_width, layer.crop_height, layer.c, layer.output + 1*(size/layer.batch)); + image im3 = float_to_image(layer.crop_width, layer.crop_height, layer.c, layer.output + 2*(size/layer.batch)); + + translate_image(im, -translate); + scale_image(im, 1/scale); + translate_image(im2, -translate); + scale_image(im2, 1/scale); + translate_image(im3, -translate); + scale_image(im3, 1/scale); + + show_image(im, "cropped"); + show_image(im2, "cropped2"); + show_image(im3, "cropped3"); + cvWaitKey(0); + */ +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cuda.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cuda.c" new file mode 100644 index 00000000..48aba6e4 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cuda.c" @@ -0,0 +1,178 @@ +int gpu_index = 0; + +#ifdef GPU + +#include "cuda.h" +#include "utils.h" +#include "blas.h" +#include +#include +#include + +void cuda_set_device(int n) +{ + gpu_index = n; + cudaError_t status = cudaSetDevice(n); + check_error(status); +} + +int cuda_get_device() +{ + int n = 0; + cudaError_t status = cudaGetDevice(&n); + check_error(status); + return n; +} + +void check_error(cudaError_t status) +{ + //cudaDeviceSynchronize(); + cudaError_t status2 = cudaGetLastError(); + if (status != cudaSuccess) + { + const char *s = cudaGetErrorString(status); + char buffer[256]; + printf("CUDA Error: %s\n", s); + assert(0); + snprintf(buffer, 256, "CUDA Error: %s", s); + error(buffer); + } + if (status2 != cudaSuccess) + { + const char *s = cudaGetErrorString(status); + char buffer[256]; + printf("CUDA Error Prev: %s\n", s); + assert(0); + snprintf(buffer, 256, "CUDA Error Prev: %s", s); + error(buffer); + } +} + +dim3 cuda_gridsize(size_t n){ + size_t k = (n-1) / BLOCK + 1; + size_t x = k; + size_t y = 1; + if(x > 65535){ + x = ceil(sqrt(k)); + y = (n-1)/(x*BLOCK) + 1; + } + dim3 d = {x, y, 1}; + //printf("%ld %ld %ld %ld\n", n, x, y, x*y*BLOCK); + return d; +} + +#ifdef CUDNN +cudnnHandle_t cudnn_handle() +{ + static int init[16] = {0}; + static cudnnHandle_t handle[16]; + int i = cuda_get_device(); + if(!init[i]) { + cudnnCreate(&handle[i]); + init[i] = 1; + } + return handle[i]; +} +#endif + +cublasHandle_t blas_handle() +{ + static int init[16] = {0}; + static cublasHandle_t handle[16]; + int i = cuda_get_device(); + if(!init[i]) { + cublasCreate(&handle[i]); + init[i] = 1; + } + return handle[i]; +} + +float *cuda_make_array(float *x, size_t n) +{ + float *x_gpu; + size_t size = sizeof(float)*n; + cudaError_t status = cudaMalloc((void **)&x_gpu, size); + check_error(status); + if(x){ + status = cudaMemcpy(x_gpu, x, size, cudaMemcpyHostToDevice); + check_error(status); + } else { + fill_gpu(n, 0, x_gpu, 1); + } + if(!x_gpu) error("Cuda malloc failed\n"); + return x_gpu; +} + +void cuda_random(float *x_gpu, size_t n) +{ + static curandGenerator_t gen[16]; + static int init[16] = {0}; + int i = cuda_get_device(); + if(!init[i]){ + curandCreateGenerator(&gen[i], CURAND_RNG_PSEUDO_DEFAULT); + curandSetPseudoRandomGeneratorSeed(gen[i], time(0)); + init[i] = 1; + } + curandGenerateUniform(gen[i], x_gpu, n); + check_error(cudaPeekAtLastError()); +} + +float cuda_compare(float *x_gpu, float *x, size_t n, char *s) +{ + float *tmp = calloc(n, sizeof(float)); + cuda_pull_array(x_gpu, tmp, n); + //int i; + //for(i = 0; i < n; ++i) printf("%f %f\n", tmp[i], x[i]); + axpy_cpu(n, -1, x, 1, tmp, 1); + float err = dot_cpu(n, tmp, 1, tmp, 1); + printf("Error %s: %f\n", s, sqrt(err/n)); + free(tmp); + return err; +} + +int *cuda_make_int_array(int *x, size_t n) +{ + int *x_gpu; + size_t size = sizeof(int)*n; + cudaError_t status = cudaMalloc((void **)&x_gpu, size); + check_error(status); + if(x){ + status = cudaMemcpy(x_gpu, x, size, cudaMemcpyHostToDevice); + check_error(status); + } + if(!x_gpu) error("Cuda malloc failed\n"); + return x_gpu; +} + +void cuda_free(float *x_gpu) +{ + cudaError_t status = cudaFree(x_gpu); + check_error(status); +} + +void cuda_push_array(float *x_gpu, float *x, size_t n) +{ + size_t size = sizeof(float)*n; + cudaError_t status = cudaMemcpy(x_gpu, x, size, cudaMemcpyHostToDevice); + check_error(status); +} + +void cuda_pull_array(float *x_gpu, float *x, size_t n) +{ + size_t size = sizeof(float)*n; + cudaError_t status = cudaMemcpy(x, x_gpu, size, cudaMemcpyDeviceToHost); + check_error(status); +} + +float cuda_mag_array(float *x_gpu, size_t n) +{ + float *temp = calloc(n, sizeof(float)); + cuda_pull_array(x_gpu, temp, n); + float m = mag_array(temp, n); + free(temp); + return m; +} +#else +void cuda_set_device(int n){} + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cuda.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cuda.h" new file mode 100644 index 00000000..a1bc2160 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/cuda.h" @@ -0,0 +1,20 @@ +#ifndef CUDA_H +#define CUDA_H + +#include "darknet.h" + +#ifdef GPU + +void check_error(cudaError_t status); +cublasHandle_t blas_handle(); +int *cuda_make_int_array(int *x, size_t n); +void cuda_random(float *x_gpu, size_t n); +float cuda_compare(float *x_gpu, float *x, size_t n, char *s); +dim3 cuda_gridsize(size_t n); + +#ifdef CUDNN +cudnnHandle_t cudnn_handle(); +#endif + +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/data.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/data.c" new file mode 100644 index 00000000..59051b4e --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/data.c" @@ -0,0 +1,1685 @@ +#include "data.h" +#include "utils.h" +#include "image.h" +#include "cuda.h" + +#include +#include +#include + +pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; + +list *get_paths(char *filename) +{ + char *path; + FILE *file = fopen(filename, "r"); + if(!file) file_error(filename); + list *lines = make_list(); + while((path=fgetl(file))){ + list_insert(lines, path); + } + fclose(file); + return lines; +} + +/* +char **get_random_paths_indexes(char **paths, int n, int m, int *indexes) +{ + char **random_paths = calloc(n, sizeof(char*)); + int i; + pthread_mutex_lock(&mutex); + for(i = 0; i < n; ++i){ + int index = rand()%m; + indexes[i] = index; + random_paths[i] = paths[index]; + if(i == 0) printf("%s\n", paths[index]); + } + pthread_mutex_unlock(&mutex); + return random_paths; +} +*/ + +char **get_random_paths(char **paths, int n, int m) +{ + char **random_paths = calloc(n, sizeof(char*)); + int i; + pthread_mutex_lock(&mutex); + for(i = 0; i < n; ++i){ + int index = rand()%m; + random_paths[i] = paths[index]; + //if(i == 0) printf("%s\n", paths[index]); + } + pthread_mutex_unlock(&mutex); + return random_paths; +} + +char **find_replace_paths(char **paths, int n, char *find, char *replace) +{ + char **replace_paths = calloc(n, sizeof(char*)); + int i; + for(i = 0; i < n; ++i){ + char replaced[4096]; + find_replace(paths[i], find, replace, replaced); + replace_paths[i] = copy_string(replaced); + } + return replace_paths; +} + +matrix load_image_paths_gray(char **paths, int n, int w, int h) +{ + int i; + matrix X; + X.rows = n; + X.vals = calloc(X.rows, sizeof(float*)); + X.cols = 0; + + for(i = 0; i < n; ++i){ + image im = load_image(paths[i], w, h, 3); + + image gray = grayscale_image(im); + free_image(im); + im = gray; + + X.vals[i] = im.data; + X.cols = im.h*im.w*im.c; + } + return X; +} + +matrix load_image_paths(char **paths, int n, int w, int h) +{ + int i; + matrix X; + X.rows = n; + X.vals = calloc(X.rows, sizeof(float*)); + X.cols = 0; + + for(i = 0; i < n; ++i){ + image im = load_image_color(paths[i], w, h); + X.vals[i] = im.data; + X.cols = im.h*im.w*im.c; + } + return X; +} + +matrix load_image_augment_paths(char **paths, int n, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure, int center) +{ + int i; + matrix X; + X.rows = n; + X.vals = calloc(X.rows, sizeof(float*)); + X.cols = 0; + + for(i = 0; i < n; ++i){ + image im = load_image_color(paths[i], 0, 0); + image crop; + if(center){ + crop = center_crop_image(im, size, size); + } else { + crop = random_augment_image(im, angle, aspect, min, max, size, size); + } + int flip = rand()%2; + if (flip) flip_image(crop); + random_distort_image(crop, hue, saturation, exposure); + + /* + show_image(im, "orig"); + show_image(crop, "crop"); + cvWaitKey(0); + */ + //grayscale_image_3c(crop); + free_image(im); + X.vals[i] = crop.data; + X.cols = crop.h*crop.w*crop.c; + } + return X; +} + + +box_label *read_boxes(char *filename, int *n) +{ + FILE *file = fopen(filename, "r"); + if(!file) file_error(filename); + float x, y, h, w; + int id; + int count = 0; + int size = 64; + box_label *boxes = calloc(size, sizeof(box_label)); + while(fscanf(file, "%d %f %f %f %f", &id, &x, &y, &w, &h) == 5){ + if(count == size) { + size = size * 2; + boxes = realloc(boxes, size*sizeof(box_label)); + } + boxes[count].id = id; + boxes[count].x = x; + boxes[count].y = y; + boxes[count].h = h; + boxes[count].w = w; + boxes[count].left = x - w/2; + boxes[count].right = x + w/2; + boxes[count].top = y - h/2; + boxes[count].bottom = y + h/2; + ++count; + } + fclose(file); + *n = count; + return boxes; +} + +void randomize_boxes(box_label *b, int n) +{ + int i; + for(i = 0; i < n; ++i){ + box_label swap = b[i]; + int index = rand()%n; + b[i] = b[index]; + b[index] = swap; + } +} + +void correct_boxes(box_label *boxes, int n, float dx, float dy, float sx, float sy, int flip) +{ + int i; + for(i = 0; i < n; ++i){ + if(boxes[i].x == 0 && boxes[i].y == 0) { + boxes[i].x = 999999; + boxes[i].y = 999999; + boxes[i].w = 999999; + boxes[i].h = 999999; + continue; + } + boxes[i].left = boxes[i].left * sx - dx; + boxes[i].right = boxes[i].right * sx - dx; + boxes[i].top = boxes[i].top * sy - dy; + boxes[i].bottom = boxes[i].bottom* sy - dy; + + if(flip){ + float swap = boxes[i].left; + boxes[i].left = 1. - boxes[i].right; + boxes[i].right = 1. - swap; + } + + boxes[i].left = constrain(0, 1, boxes[i].left); + boxes[i].right = constrain(0, 1, boxes[i].right); + boxes[i].top = constrain(0, 1, boxes[i].top); + boxes[i].bottom = constrain(0, 1, boxes[i].bottom); + + boxes[i].x = (boxes[i].left+boxes[i].right)/2; + boxes[i].y = (boxes[i].top+boxes[i].bottom)/2; + boxes[i].w = (boxes[i].right - boxes[i].left); + boxes[i].h = (boxes[i].bottom - boxes[i].top); + + boxes[i].w = constrain(0, 1, boxes[i].w); + boxes[i].h = constrain(0, 1, boxes[i].h); + } +} + +void fill_truth_swag(char *path, float *truth, int classes, int flip, float dx, float dy, float sx, float sy) +{ + char labelpath[4096]; + find_replace(path, "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + + int count = 0; + box_label *boxes = read_boxes(labelpath, &count); + randomize_boxes(boxes, count); + correct_boxes(boxes, count, dx, dy, sx, sy, flip); + float x,y,w,h; + int id; + int i; + + for (i = 0; i < count && i < 90; ++i) { + x = boxes[i].x; + y = boxes[i].y; + w = boxes[i].w; + h = boxes[i].h; + id = boxes[i].id; + + if (w < .0 || h < .0) continue; + + int index = (4+classes) * i; + + truth[index++] = x; + truth[index++] = y; + truth[index++] = w; + truth[index++] = h; + + if (id < classes) truth[index+id] = 1; + } + free(boxes); +} + +void fill_truth_region(char *path, float *truth, int classes, int num_boxes, int flip, float dx, float dy, float sx, float sy) +{ + char labelpath[4096]; + find_replace(path, "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".png", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + int count = 0; + box_label *boxes = read_boxes(labelpath, &count); + randomize_boxes(boxes, count); + correct_boxes(boxes, count, dx, dy, sx, sy, flip); + float x,y,w,h; + int id; + int i; + + for (i = 0; i < count; ++i) { + x = boxes[i].x; + y = boxes[i].y; + w = boxes[i].w; + h = boxes[i].h; + id = boxes[i].id; + + if (w < .005 || h < .005) continue; + + int col = (int)(x*num_boxes); + int row = (int)(y*num_boxes); + + x = x*num_boxes - col; + y = y*num_boxes - row; + + int index = (col+row*num_boxes)*(5+classes); + if (truth[index]) continue; + truth[index++] = 1; + + if (id < classes) truth[index+id] = 1; + index += classes; + + truth[index++] = x; + truth[index++] = y; + truth[index++] = w; + truth[index++] = h; + } + free(boxes); +} + +void load_rle(image im, int *rle, int n) +{ + int count = 0; + int curr = 0; + int i,j; + for(i = 0; i < n; ++i){ + for(j = 0; j < rle[i]; ++j){ + im.data[count++] = curr; + } + curr = 1 - curr; + } + for(; count < im.h*im.w*im.c; ++count){ + im.data[count] = curr; + } +} + +void or_image(image src, image dest, int c) +{ + int i; + for(i = 0; i < src.w*src.h; ++i){ + if(src.data[i]) dest.data[dest.w*dest.h*c + i] = 1; + } +} + +void exclusive_image(image src) +{ + int k, j, i; + int s = src.w*src.h; + for(k = 0; k < src.c-1; ++k){ + for(i = 0; i < s; ++i){ + if (src.data[k*s + i]){ + for(j = k+1; j < src.c; ++j){ + src.data[j*s + i] = 0; + } + } + } + } +} + +box bound_image(image im) +{ + int x,y; + int minx = im.w; + int miny = im.h; + int maxx = 0; + int maxy = 0; + for(y = 0; y < im.h; ++y){ + for(x = 0; x < im.w; ++x){ + if(im.data[y*im.w + x]){ + minx = (x < minx) ? x : minx; + miny = (y < miny) ? y : miny; + maxx = (x > maxx) ? x : maxx; + maxy = (y > maxy) ? y : maxy; + } + } + } + box b = {minx, miny, maxx-minx + 1, maxy-miny + 1}; + //printf("%f %f %f %f\n", b.x, b.y, b.w, b.h); + return b; +} + +void fill_truth_iseg(char *path, int num_boxes, float *truth, int classes, int w, int h, augment_args aug, int flip, int mw, int mh) +{ + char labelpath[4096]; + find_replace(path, "images", "mask", labelpath); + find_replace(labelpath, "JPEGImages", "mask", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + FILE *file = fopen(labelpath, "r"); + if(!file) file_error(labelpath); + char buff[32788]; + int id; + int i = 0; + int j; + image part = make_image(w, h, 1); + while((fscanf(file, "%d %s", &id, buff) == 2) && i < num_boxes){ + int n = 0; + int *rle = read_intlist(buff, &n, 0); + load_rle(part, rle, n); + image sized = rotate_crop_image(part, aug.rad, aug.scale, aug.w, aug.h, aug.dx, aug.dy, aug.aspect); + if(flip) flip_image(sized); + + image mask = resize_image(sized, mw, mh); + truth[i*(mw*mh+1)] = id; + for(j = 0; j < mw*mh; ++j){ + truth[i*(mw*mh + 1) + 1 + j] = mask.data[j]; + } + ++i; + + free_image(mask); + free_image(sized); + free(rle); + } + if(i < num_boxes) truth[i*(mw*mh+1)] = -1; + fclose(file); + free_image(part); +} + +void fill_truth_mask(char *path, int num_boxes, float *truth, int classes, int w, int h, augment_args aug, int flip, int mw, int mh) +{ + char labelpath[4096]; + find_replace(path, "images", "mask", labelpath); + find_replace(labelpath, "JPEGImages", "mask", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + FILE *file = fopen(labelpath, "r"); + if(!file) file_error(labelpath); + char buff[32788]; + int id; + int i = 0; + image part = make_image(w, h, 1); + while((fscanf(file, "%d %s", &id, buff) == 2) && i < num_boxes){ + int n = 0; + int *rle = read_intlist(buff, &n, 0); + load_rle(part, rle, n); + image sized = rotate_crop_image(part, aug.rad, aug.scale, aug.w, aug.h, aug.dx, aug.dy, aug.aspect); + if(flip) flip_image(sized); + box b = bound_image(sized); + if(b.w > 0){ + image crop = crop_image(sized, b.x, b.y, b.w, b.h); + image mask = resize_image(crop, mw, mh); + truth[i*(4 + mw*mh + 1) + 0] = (b.x + b.w/2.)/sized.w; + truth[i*(4 + mw*mh + 1) + 1] = (b.y + b.h/2.)/sized.h; + truth[i*(4 + mw*mh + 1) + 2] = b.w/sized.w; + truth[i*(4 + mw*mh + 1) + 3] = b.h/sized.h; + int j; + for(j = 0; j < mw*mh; ++j){ + truth[i*(4 + mw*mh + 1) + 4 + j] = mask.data[j]; + } + truth[i*(4 + mw*mh + 1) + 4 + mw*mh] = id; + free_image(crop); + free_image(mask); + ++i; + } + free_image(sized); + free(rle); + } + fclose(file); + free_image(part); +} + + +void fill_truth_detection(char *path, int num_boxes, float *truth, int classes, int flip, float dx, float dy, float sx, float sy) +{ + char labelpath[4096]; + find_replace(path, "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + + find_replace(labelpath, "raw", "labels", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".png", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + int count = 0; + box_label *boxes = read_boxes(labelpath, &count); + randomize_boxes(boxes, count); + correct_boxes(boxes, count, dx, dy, sx, sy, flip); + if(count > num_boxes) count = num_boxes; + float x,y,w,h; + int id; + int i; + int sub = 0; + + for (i = 0; i < count; ++i) { + x = boxes[i].x; + y = boxes[i].y; + w = boxes[i].w; + h = boxes[i].h; + id = boxes[i].id; + + if ((w < .001 || h < .001)) { + ++sub; + continue; + } + + truth[(i-sub)*5+0] = x; + truth[(i-sub)*5+1] = y; + truth[(i-sub)*5+2] = w; + truth[(i-sub)*5+3] = h; + truth[(i-sub)*5+4] = id; + } + free(boxes); +} + +#define NUMCHARS 37 + +void print_letters(float *pred, int n) +{ + int i; + for(i = 0; i < n; ++i){ + int index = max_index(pred+i*NUMCHARS, NUMCHARS); + printf("%c", int_to_alphanum(index)); + } + printf("\n"); +} + +void fill_truth_captcha(char *path, int n, float *truth) +{ + char *begin = strrchr(path, '/'); + ++begin; + int i; + for(i = 0; i < strlen(begin) && i < n && begin[i] != '.'; ++i){ + int index = alphanum_to_int(begin[i]); + if(index > 35) printf("Bad %c\n", begin[i]); + truth[i*NUMCHARS+index] = 1; + } + for(;i < n; ++i){ + truth[i*NUMCHARS + NUMCHARS-1] = 1; + } +} + +data load_data_captcha(char **paths, int n, int m, int k, int w, int h) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.shallow = 0; + d.X = load_image_paths(paths, n, w, h); + d.y = make_matrix(n, k*NUMCHARS); + int i; + for(i = 0; i < n; ++i){ + fill_truth_captcha(paths[i], k, d.y.vals[i]); + } + if(m) free(paths); + return d; +} + +data load_data_captcha_encode(char **paths, int n, int m, int w, int h) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.shallow = 0; + d.X = load_image_paths(paths, n, w, h); + d.X.cols = 17100; + d.y = d.X; + if(m) free(paths); + return d; +} + +void fill_truth(char *path, char **labels, int k, float *truth) +{ + int i; + memset(truth, 0, k*sizeof(float)); + int count = 0; + for(i = 0; i < k; ++i){ + if(strstr(path, labels[i])){ + truth[i] = 1; + ++count; + //printf("%s %s %d\n", path, labels[i], i); + } + } + if(count != 1 && (k != 1 || count != 0)) printf("Too many or too few labels: %d, %s\n", count, path); +} + +void fill_hierarchy(float *truth, int k, tree *hierarchy) +{ + int j; + for(j = 0; j < k; ++j){ + if(truth[j]){ + int parent = hierarchy->parent[j]; + while(parent >= 0){ + truth[parent] = 1; + parent = hierarchy->parent[parent]; + } + } + } + int i; + int count = 0; + for(j = 0; j < hierarchy->groups; ++j){ + //printf("%d\n", count); + int mask = 1; + for(i = 0; i < hierarchy->group_size[j]; ++i){ + if(truth[count + i]){ + mask = 0; + break; + } + } + if (mask) { + for(i = 0; i < hierarchy->group_size[j]; ++i){ + truth[count + i] = SECRET_NUM; + } + } + count += hierarchy->group_size[j]; + } +} + +matrix load_regression_labels_paths(char **paths, int n, int k) +{ + matrix y = make_matrix(n, k); + int i,j; + for(i = 0; i < n; ++i){ + char labelpath[4096]; + find_replace(paths[i], "images", "labels", labelpath); + find_replace(labelpath, "JPEGImages", "labels", labelpath); + find_replace(labelpath, ".BMP", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPeG", ".txt", labelpath); + find_replace(labelpath, ".Jpeg", ".txt", labelpath); + find_replace(labelpath, ".PNG", ".txt", labelpath); + find_replace(labelpath, ".TIF", ".txt", labelpath); + find_replace(labelpath, ".bmp", ".txt", labelpath); + find_replace(labelpath, ".jpeg", ".txt", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".png", ".txt", labelpath); + find_replace(labelpath, ".tif", ".txt", labelpath); + + FILE *file = fopen(labelpath, "r"); + for(j = 0; j < k; ++j){ + fscanf(file, "%f", &(y.vals[i][j])); + } + fclose(file); + } + return y; +} + +matrix load_labels_paths(char **paths, int n, char **labels, int k, tree *hierarchy) +{ + matrix y = make_matrix(n, k); + int i; + for(i = 0; i < n && labels; ++i){ + fill_truth(paths[i], labels, k, y.vals[i]); + if(hierarchy){ + fill_hierarchy(y.vals[i], k, hierarchy); + } + } + return y; +} + +matrix load_tags_paths(char **paths, int n, int k) +{ + matrix y = make_matrix(n, k); + int i; + //int count = 0; + for(i = 0; i < n; ++i){ + char label[4096]; + find_replace(paths[i], "images", "labels", label); + find_replace(label, ".jpg", ".txt", label); + FILE *file = fopen(label, "r"); + if (!file) continue; + //++count; + int tag; + while(fscanf(file, "%d", &tag) == 1){ + if(tag < k){ + y.vals[i][tag] = 1; + } + } + fclose(file); + } + //printf("%d/%d\n", count, n); + return y; +} + +char **get_labels(char *filename) +{ + list *plist = get_paths(filename); + char **labels = (char **)list_to_array(plist); + free_list(plist); + return labels; +} + +void free_data(data d) +{ + if(!d.shallow){ + free_matrix(d.X); + free_matrix(d.y); + }else{ + free(d.X.vals); + free(d.y.vals); + } +} + +image get_segmentation_image(char *path, int w, int h, int classes) +{ + char labelpath[4096]; + find_replace(path, "images", "mask", labelpath); + find_replace(labelpath, "JPEGImages", "mask", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + image mask = make_image(w, h, classes); + FILE *file = fopen(labelpath, "r"); + if(!file) file_error(labelpath); + char buff[32788]; + int id; + image part = make_image(w, h, 1); + while(fscanf(file, "%d %s", &id, buff) == 2){ + int n = 0; + int *rle = read_intlist(buff, &n, 0); + load_rle(part, rle, n); + or_image(part, mask, id); + free(rle); + } + //exclusive_image(mask); + fclose(file); + free_image(part); + return mask; +} + +image get_segmentation_image2(char *path, int w, int h, int classes) +{ + char labelpath[4096]; + find_replace(path, "images", "mask", labelpath); + find_replace(labelpath, "JPEGImages", "mask", labelpath); + find_replace(labelpath, ".jpg", ".txt", labelpath); + find_replace(labelpath, ".JPG", ".txt", labelpath); + find_replace(labelpath, ".JPEG", ".txt", labelpath); + image mask = make_image(w, h, classes+1); + int i; + for(i = 0; i < w*h; ++i){ + mask.data[w*h*classes + i] = 1; + } + FILE *file = fopen(labelpath, "r"); + if(!file) file_error(labelpath); + char buff[32788]; + int id; + image part = make_image(w, h, 1); + while(fscanf(file, "%d %s", &id, buff) == 2){ + int n = 0; + int *rle = read_intlist(buff, &n, 0); + load_rle(part, rle, n); + or_image(part, mask, id); + for(i = 0; i < w*h; ++i){ + if(part.data[i]) mask.data[w*h*classes + i] = 0; + } + free(rle); + } + //exclusive_image(mask); + fclose(file); + free_image(part); + return mask; +} + +data load_data_seg(int n, char **paths, int m, int w, int h, int classes, int min, int max, float angle, float aspect, float hue, float saturation, float exposure, int div) +{ + char **random_paths = get_random_paths(paths, n, m); + int i; + data d = {0}; + d.shallow = 0; + + d.X.rows = n; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*3; + + + d.y.rows = n; + d.y.cols = h*w*classes/div/div; + d.y.vals = calloc(d.X.rows, sizeof(float*)); + + for(i = 0; i < n; ++i){ + image orig = load_image_color(random_paths[i], 0, 0); + augment_args a = random_augment_args(orig, angle, aspect, min, max, w, h); + image sized = rotate_crop_image(orig, a.rad, a.scale, a.w, a.h, a.dx, a.dy, a.aspect); + + int flip = rand()%2; + if(flip) flip_image(sized); + random_distort_image(sized, hue, saturation, exposure); + d.X.vals[i] = sized.data; + + image mask = get_segmentation_image(random_paths[i], orig.w, orig.h, classes); + //image mask = make_image(orig.w, orig.h, classes+1); + image sized_m = rotate_crop_image(mask, a.rad, a.scale/div, a.w/div, a.h/div, a.dx/div, a.dy/div, a.aspect); + + if(flip) flip_image(sized_m); + d.y.vals[i] = sized_m.data; + + free_image(orig); + free_image(mask); + + /* + image rgb = mask_to_rgb(sized_m, classes); + show_image(rgb, "part"); + show_image(sized, "orig"); + cvWaitKey(0); + free_image(rgb); + */ + } + free(random_paths); + return d; +} + +data load_data_iseg(int n, char **paths, int m, int w, int h, int classes, int boxes, int div, int min, int max, float angle, float aspect, float hue, float saturation, float exposure) +{ + char **random_paths = get_random_paths(paths, n, m); + int i; + data d = {0}; + d.shallow = 0; + + d.X.rows = n; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*3; + + d.y = make_matrix(n, (((w/div)*(h/div))+1)*boxes); + + for(i = 0; i < n; ++i){ + image orig = load_image_color(random_paths[i], 0, 0); + augment_args a = random_augment_args(orig, angle, aspect, min, max, w, h); + image sized = rotate_crop_image(orig, a.rad, a.scale, a.w, a.h, a.dx, a.dy, a.aspect); + + int flip = rand()%2; + if(flip) flip_image(sized); + random_distort_image(sized, hue, saturation, exposure); + d.X.vals[i] = sized.data; + //show_image(sized, "image"); + + fill_truth_iseg(random_paths[i], boxes, d.y.vals[i], classes, orig.w, orig.h, a, flip, w/div, h/div); + + free_image(orig); + + /* + image rgb = mask_to_rgb(sized_m, classes); + show_image(rgb, "part"); + show_image(sized, "orig"); + cvWaitKey(0); + free_image(rgb); + */ + } + free(random_paths); + return d; +} + +data load_data_mask(int n, char **paths, int m, int w, int h, int classes, int boxes, int coords, int min, int max, float angle, float aspect, float hue, float saturation, float exposure) +{ + char **random_paths = get_random_paths(paths, n, m); + int i; + data d = {0}; + d.shallow = 0; + + d.X.rows = n; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*3; + + d.y = make_matrix(n, (coords+1)*boxes); + + for(i = 0; i < n; ++i){ + image orig = load_image_color(random_paths[i], 0, 0); + augment_args a = random_augment_args(orig, angle, aspect, min, max, w, h); + image sized = rotate_crop_image(orig, a.rad, a.scale, a.w, a.h, a.dx, a.dy, a.aspect); + + int flip = rand()%2; + if(flip) flip_image(sized); + random_distort_image(sized, hue, saturation, exposure); + d.X.vals[i] = sized.data; + //show_image(sized, "image"); + + fill_truth_mask(random_paths[i], boxes, d.y.vals[i], classes, orig.w, orig.h, a, flip, 14, 14); + + free_image(orig); + + /* + image rgb = mask_to_rgb(sized_m, classes); + show_image(rgb, "part"); + show_image(sized, "orig"); + cvWaitKey(0); + free_image(rgb); + */ + } + free(random_paths); + return d; +} + +data load_data_region(int n, char **paths, int m, int w, int h, int size, int classes, float jitter, float hue, float saturation, float exposure) +{ + char **random_paths = get_random_paths(paths, n, m); + int i; + data d = {0}; + d.shallow = 0; + + d.X.rows = n; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*3; + + + int k = size*size*(5+classes); + d.y = make_matrix(n, k); + for(i = 0; i < n; ++i){ + image orig = load_image_color(random_paths[i], 0, 0); + + int oh = orig.h; + int ow = orig.w; + + int dw = (ow*jitter); + int dh = (oh*jitter); + + int pleft = rand_uniform(-dw, dw); + int pright = rand_uniform(-dw, dw); + int ptop = rand_uniform(-dh, dh); + int pbot = rand_uniform(-dh, dh); + + int swidth = ow - pleft - pright; + int sheight = oh - ptop - pbot; + + float sx = (float)swidth / ow; + float sy = (float)sheight / oh; + + int flip = rand()%2; + image cropped = crop_image(orig, pleft, ptop, swidth, sheight); + + float dx = ((float)pleft/ow)/sx; + float dy = ((float)ptop /oh)/sy; + + image sized = resize_image(cropped, w, h); + if(flip) flip_image(sized); + random_distort_image(sized, hue, saturation, exposure); + d.X.vals[i] = sized.data; + + fill_truth_region(random_paths[i], d.y.vals[i], classes, size, flip, dx, dy, 1./sx, 1./sy); + + free_image(orig); + free_image(cropped); + } + free(random_paths); + return d; +} + +data load_data_compare(int n, char **paths, int m, int classes, int w, int h) +{ + if(m) paths = get_random_paths(paths, 2*n, m); + int i,j; + data d = {0}; + d.shallow = 0; + + d.X.rows = n; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*6; + + int k = 2*(classes); + d.y = make_matrix(n, k); + for(i = 0; i < n; ++i){ + image im1 = load_image_color(paths[i*2], w, h); + image im2 = load_image_color(paths[i*2+1], w, h); + + d.X.vals[i] = calloc(d.X.cols, sizeof(float)); + memcpy(d.X.vals[i], im1.data, h*w*3*sizeof(float)); + memcpy(d.X.vals[i] + h*w*3, im2.data, h*w*3*sizeof(float)); + + int id; + float iou; + + char imlabel1[4096]; + char imlabel2[4096]; + find_replace(paths[i*2], "imgs", "labels", imlabel1); + find_replace(imlabel1, "jpg", "txt", imlabel1); + FILE *fp1 = fopen(imlabel1, "r"); + + while(fscanf(fp1, "%d %f", &id, &iou) == 2){ + if (d.y.vals[i][2*id] < iou) d.y.vals[i][2*id] = iou; + } + + find_replace(paths[i*2+1], "imgs", "labels", imlabel2); + find_replace(imlabel2, "jpg", "txt", imlabel2); + FILE *fp2 = fopen(imlabel2, "r"); + + while(fscanf(fp2, "%d %f", &id, &iou) == 2){ + if (d.y.vals[i][2*id + 1] < iou) d.y.vals[i][2*id + 1] = iou; + } + + for (j = 0; j < classes; ++j){ + if (d.y.vals[i][2*j] > .5 && d.y.vals[i][2*j+1] < .5){ + d.y.vals[i][2*j] = 1; + d.y.vals[i][2*j+1] = 0; + } else if (d.y.vals[i][2*j] < .5 && d.y.vals[i][2*j+1] > .5){ + d.y.vals[i][2*j] = 0; + d.y.vals[i][2*j+1] = 1; + } else { + d.y.vals[i][2*j] = SECRET_NUM; + d.y.vals[i][2*j+1] = SECRET_NUM; + } + } + fclose(fp1); + fclose(fp2); + + free_image(im1); + free_image(im2); + } + if(m) free(paths); + return d; +} + +data load_data_swag(char **paths, int n, int classes, float jitter) +{ + int index = rand()%n; + char *random_path = paths[index]; + + image orig = load_image_color(random_path, 0, 0); + int h = orig.h; + int w = orig.w; + + data d = {0}; + d.shallow = 0; + d.w = w; + d.h = h; + + d.X.rows = 1; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*3; + + int k = (4+classes)*90; + d.y = make_matrix(1, k); + + int dw = w*jitter; + int dh = h*jitter; + + int pleft = rand_uniform(-dw, dw); + int pright = rand_uniform(-dw, dw); + int ptop = rand_uniform(-dh, dh); + int pbot = rand_uniform(-dh, dh); + + int swidth = w - pleft - pright; + int sheight = h - ptop - pbot; + + float sx = (float)swidth / w; + float sy = (float)sheight / h; + + int flip = rand()%2; + image cropped = crop_image(orig, pleft, ptop, swidth, sheight); + + float dx = ((float)pleft/w)/sx; + float dy = ((float)ptop /h)/sy; + + image sized = resize_image(cropped, w, h); + if(flip) flip_image(sized); + d.X.vals[0] = sized.data; + + fill_truth_swag(random_path, d.y.vals[0], classes, flip, dx, dy, 1./sx, 1./sy); + + free_image(orig); + free_image(cropped); + + return d; +} + +data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, int classes, float jitter, float hue, float saturation, float exposure) +{ + char **random_paths = get_random_paths(paths, n, m); + int i; + data d = {0}; + d.shallow = 0; + + d.X.rows = n; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + d.X.cols = h*w*3; + + d.y = make_matrix(n, 5*boxes); + for(i = 0; i < n; ++i){ + image orig = load_image_color(random_paths[i], 0, 0); + image sized = make_image(w, h, orig.c); + fill_image(sized, .5); + + float dw = jitter * orig.w; + float dh = jitter * orig.h; + + float new_ar = (orig.w + rand_uniform(-dw, dw)) / (orig.h + rand_uniform(-dh, dh)); + //float scale = rand_uniform(.25, 2); + float scale = 1; + + float nw, nh; + + if(new_ar < 1){ + nh = scale * h; + nw = nh * new_ar; + } else { + nw = scale * w; + nh = nw / new_ar; + } + + float dx = rand_uniform(0, w - nw); + float dy = rand_uniform(0, h - nh); + + place_image(orig, nw, nh, dx, dy, sized); + + random_distort_image(sized, hue, saturation, exposure); + + int flip = rand()%2; + if(flip) flip_image(sized); + d.X.vals[i] = sized.data; + + + fill_truth_detection(random_paths[i], boxes, d.y.vals[i], classes, flip, -dx/w, -dy/h, nw/w, nh/h); + + free_image(orig); + } + free(random_paths); + return d; +} + +void *load_thread(void *ptr) +{ + //printf("Loading data: %d\n", rand()); + load_args a = *(struct load_args*)ptr; + if(a.exposure == 0) a.exposure = 1; + if(a.saturation == 0) a.saturation = 1; + if(a.aspect == 0) a.aspect = 1; + + if (a.type == OLD_CLASSIFICATION_DATA){ + *a.d = load_data_old(a.paths, a.n, a.m, a.labels, a.classes, a.w, a.h); + } else if (a.type == REGRESSION_DATA){ + *a.d = load_data_regression(a.paths, a.n, a.m, a.classes, a.min, a.max, a.size, a.angle, a.aspect, a.hue, a.saturation, a.exposure); + } else if (a.type == CLASSIFICATION_DATA){ + *a.d = load_data_augment(a.paths, a.n, a.m, a.labels, a.classes, a.hierarchy, a.min, a.max, a.size, a.angle, a.aspect, a.hue, a.saturation, a.exposure, a.center); + } else if (a.type == SUPER_DATA){ + *a.d = load_data_super(a.paths, a.n, a.m, a.w, a.h, a.scale); + } else if (a.type == WRITING_DATA){ + *a.d = load_data_writing(a.paths, a.n, a.m, a.w, a.h, a.out_w, a.out_h); + } else if (a.type == ISEG_DATA){ + *a.d = load_data_iseg(a.n, a.paths, a.m, a.w, a.h, a.classes, a.num_boxes, a.scale, a.min, a.max, a.angle, a.aspect, a.hue, a.saturation, a.exposure); + } else if (a.type == INSTANCE_DATA){ + *a.d = load_data_mask(a.n, a.paths, a.m, a.w, a.h, a.classes, a.num_boxes, a.coords, a.min, a.max, a.angle, a.aspect, a.hue, a.saturation, a.exposure); + } else if (a.type == SEGMENTATION_DATA){ + *a.d = load_data_seg(a.n, a.paths, a.m, a.w, a.h, a.classes, a.min, a.max, a.angle, a.aspect, a.hue, a.saturation, a.exposure, a.scale); + } else if (a.type == REGION_DATA){ + *a.d = load_data_region(a.n, a.paths, a.m, a.w, a.h, a.num_boxes, a.classes, a.jitter, a.hue, a.saturation, a.exposure); + } else if (a.type == DETECTION_DATA){ + *a.d = load_data_detection(a.n, a.paths, a.m, a.w, a.h, a.num_boxes, a.classes, a.jitter, a.hue, a.saturation, a.exposure); + } else if (a.type == SWAG_DATA){ + *a.d = load_data_swag(a.paths, a.n, a.classes, a.jitter); + } else if (a.type == COMPARE_DATA){ + *a.d = load_data_compare(a.n, a.paths, a.m, a.classes, a.w, a.h); + } else if (a.type == IMAGE_DATA){ + *(a.im) = load_image_color(a.path, 0, 0); + *(a.resized) = resize_image(*(a.im), a.w, a.h); + } else if (a.type == LETTERBOX_DATA){ + *(a.im) = load_image_color(a.path, 0, 0); + *(a.resized) = letterbox_image(*(a.im), a.w, a.h); + } else if (a.type == TAG_DATA){ + *a.d = load_data_tag(a.paths, a.n, a.m, a.classes, a.min, a.max, a.size, a.angle, a.aspect, a.hue, a.saturation, a.exposure); + } + free(ptr); + return 0; +} + +pthread_t load_data_in_thread(load_args args) +{ + pthread_t thread; + struct load_args *ptr = calloc(1, sizeof(struct load_args)); + *ptr = args; + if(pthread_create(&thread, 0, load_thread, ptr)) error("Thread creation failed"); + return thread; +} + +void *load_threads(void *ptr) +{ + int i; + load_args args = *(load_args *)ptr; + if (args.threads == 0) args.threads = 1; + data *out = args.d; + int total = args.n; + free(ptr); + data *buffers = calloc(args.threads, sizeof(data)); + pthread_t *threads = calloc(args.threads, sizeof(pthread_t)); + for(i = 0; i < args.threads; ++i){ + args.d = buffers + i; + args.n = (i+1) * total/args.threads - i * total/args.threads; + threads[i] = load_data_in_thread(args); + } + for(i = 0; i < args.threads; ++i){ + pthread_join(threads[i], 0); + } + *out = concat_datas(buffers, args.threads); + out->shallow = 0; + for(i = 0; i < args.threads; ++i){ + buffers[i].shallow = 1; + free_data(buffers[i]); + } + free(buffers); + free(threads); + return 0; +} + +void load_data_blocking(load_args args) +{ + struct load_args *ptr = calloc(1, sizeof(struct load_args)); + *ptr = args; + load_thread(ptr); +} + +pthread_t load_data(load_args args) +{ + pthread_t thread; + struct load_args *ptr = calloc(1, sizeof(struct load_args)); + *ptr = args; + if(pthread_create(&thread, 0, load_threads, ptr)) error("Thread creation failed"); + return thread; +} + +data load_data_writing(char **paths, int n, int m, int w, int h, int out_w, int out_h) +{ + if(m) paths = get_random_paths(paths, n, m); + char **replace_paths = find_replace_paths(paths, n, ".png", "-label.png"); + data d = {0}; + d.shallow = 0; + d.X = load_image_paths(paths, n, w, h); + d.y = load_image_paths_gray(replace_paths, n, out_w, out_h); + if(m) free(paths); + int i; + for(i = 0; i < n; ++i) free(replace_paths[i]); + free(replace_paths); + return d; +} + +data load_data_old(char **paths, int n, int m, char **labels, int k, int w, int h) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.shallow = 0; + d.X = load_image_paths(paths, n, w, h); + d.y = load_labels_paths(paths, n, labels, k, 0); + if(m) free(paths); + return d; +} + +/* + data load_data_study(char **paths, int n, int m, char **labels, int k, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure) + { + data d = {0}; + d.indexes = calloc(n, sizeof(int)); + if(m) paths = get_random_paths_indexes(paths, n, m, d.indexes); + d.shallow = 0; + d.X = load_image_augment_paths(paths, n, min, max, size, angle, aspect, hue, saturation, exposure); + d.y = load_labels_paths(paths, n, labels, k); + if(m) free(paths); + return d; + } + */ + +data load_data_super(char **paths, int n, int m, int w, int h, int scale) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.shallow = 0; + + int i; + d.X.rows = n; + d.X.vals = calloc(n, sizeof(float*)); + d.X.cols = w*h*3; + + d.y.rows = n; + d.y.vals = calloc(n, sizeof(float*)); + d.y.cols = w*scale * h*scale * 3; + + for(i = 0; i < n; ++i){ + image im = load_image_color(paths[i], 0, 0); + image crop = random_crop_image(im, w*scale, h*scale); + int flip = rand()%2; + if (flip) flip_image(crop); + image resize = resize_image(crop, w, h); + d.X.vals[i] = resize.data; + d.y.vals[i] = crop.data; + free_image(im); + } + + if(m) free(paths); + return d; +} + +data load_data_regression(char **paths, int n, int m, int k, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.shallow = 0; + d.X = load_image_augment_paths(paths, n, min, max, size, angle, aspect, hue, saturation, exposure, 0); + d.y = load_regression_labels_paths(paths, n, k); + if(m) free(paths); + return d; +} + +data select_data(data *orig, int *inds) +{ + data d = {0}; + d.shallow = 1; + d.w = orig[0].w; + d.h = orig[0].h; + + d.X.rows = orig[0].X.rows; + d.y.rows = orig[0].X.rows; + + d.X.cols = orig[0].X.cols; + d.y.cols = orig[0].y.cols; + + d.X.vals = calloc(orig[0].X.rows, sizeof(float *)); + d.y.vals = calloc(orig[0].y.rows, sizeof(float *)); + int i; + for(i = 0; i < d.X.rows; ++i){ + d.X.vals[i] = orig[inds[i]].X.vals[i]; + d.y.vals[i] = orig[inds[i]].y.vals[i]; + } + return d; +} + +data *tile_data(data orig, int divs, int size) +{ + data *ds = calloc(divs*divs, sizeof(data)); + int i, j; +#pragma omp parallel for + for(i = 0; i < divs*divs; ++i){ + data d; + d.shallow = 0; + d.w = orig.w/divs * size; + d.h = orig.h/divs * size; + d.X.rows = orig.X.rows; + d.X.cols = d.w*d.h*3; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + + d.y = copy_matrix(orig.y); +#pragma omp parallel for + for(j = 0; j < orig.X.rows; ++j){ + int x = (i%divs) * orig.w / divs - (d.w - orig.w/divs)/2; + int y = (i/divs) * orig.h / divs - (d.h - orig.h/divs)/2; + image im = float_to_image(orig.w, orig.h, 3, orig.X.vals[j]); + d.X.vals[j] = crop_image(im, x, y, d.w, d.h).data; + } + ds[i] = d; + } + return ds; +} + +data resize_data(data orig, int w, int h) +{ + data d = {0}; + d.shallow = 0; + d.w = w; + d.h = h; + int i; + d.X.rows = orig.X.rows; + d.X.cols = w*h*3; + d.X.vals = calloc(d.X.rows, sizeof(float*)); + + d.y = copy_matrix(orig.y); +#pragma omp parallel for + for(i = 0; i < orig.X.rows; ++i){ + image im = float_to_image(orig.w, orig.h, 3, orig.X.vals[i]); + d.X.vals[i] = resize_image(im, w, h).data; + } + return d; +} + +data load_data_augment(char **paths, int n, int m, char **labels, int k, tree *hierarchy, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure, int center) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.shallow = 0; + d.w=size; + d.h=size; + d.X = load_image_augment_paths(paths, n, min, max, size, angle, aspect, hue, saturation, exposure, center); + d.y = load_labels_paths(paths, n, labels, k, hierarchy); + if(m) free(paths); + return d; +} + +data load_data_tag(char **paths, int n, int m, int k, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure) +{ + if(m) paths = get_random_paths(paths, n, m); + data d = {0}; + d.w = size; + d.h = size; + d.shallow = 0; + d.X = load_image_augment_paths(paths, n, min, max, size, angle, aspect, hue, saturation, exposure, 0); + d.y = load_tags_paths(paths, n, k); + if(m) free(paths); + return d; +} + +matrix concat_matrix(matrix m1, matrix m2) +{ + int i, count = 0; + matrix m; + m.cols = m1.cols; + m.rows = m1.rows+m2.rows; + m.vals = calloc(m1.rows + m2.rows, sizeof(float*)); + for(i = 0; i < m1.rows; ++i){ + m.vals[count++] = m1.vals[i]; + } + for(i = 0; i < m2.rows; ++i){ + m.vals[count++] = m2.vals[i]; + } + return m; +} + +data concat_data(data d1, data d2) +{ + data d = {0}; + d.shallow = 1; + d.X = concat_matrix(d1.X, d2.X); + d.y = concat_matrix(d1.y, d2.y); + d.w = d1.w; + d.h = d1.h; + return d; +} + +data concat_datas(data *d, int n) +{ + int i; + data out = {0}; + for(i = 0; i < n; ++i){ + data new = concat_data(d[i], out); + free_data(out); + out = new; + } + return out; +} + +data load_categorical_data_csv(char *filename, int target, int k) +{ + data d = {0}; + d.shallow = 0; + matrix X = csv_to_matrix(filename); + float *truth_1d = pop_column(&X, target); + float **truth = one_hot_encode(truth_1d, X.rows, k); + matrix y; + y.rows = X.rows; + y.cols = k; + y.vals = truth; + d.X = X; + d.y = y; + free(truth_1d); + return d; +} + +data load_cifar10_data(char *filename) +{ + data d = {0}; + d.shallow = 0; + long i,j; + matrix X = make_matrix(10000, 3072); + matrix y = make_matrix(10000, 10); + d.X = X; + d.y = y; + + FILE *fp = fopen(filename, "rb"); + if(!fp) file_error(filename); + for(i = 0; i < 10000; ++i){ + unsigned char bytes[3073]; + fread(bytes, 1, 3073, fp); + int class = bytes[0]; + y.vals[i][class] = 1; + for(j = 0; j < X.cols; ++j){ + X.vals[i][j] = (double)bytes[j+1]; + } + } + scale_data_rows(d, 1./255); + //normalize_data_rows(d); + fclose(fp); + return d; +} + +void get_random_batch(data d, int n, float *X, float *y) +{ + int j; + for(j = 0; j < n; ++j){ + int index = rand()%d.X.rows; + memcpy(X+j*d.X.cols, d.X.vals[index], d.X.cols*sizeof(float)); + memcpy(y+j*d.y.cols, d.y.vals[index], d.y.cols*sizeof(float)); + } +} + +void get_next_batch(data d, int n, int offset, float *X, float *y) +{ + int j; + for(j = 0; j < n; ++j){ + int index = offset + j; + memcpy(X+j*d.X.cols, d.X.vals[index], d.X.cols*sizeof(float)); + if(y) memcpy(y+j*d.y.cols, d.y.vals[index], d.y.cols*sizeof(float)); + } +} + +void smooth_data(data d) +{ + int i, j; + float scale = 1. / d.y.cols; + float eps = .1; + for(i = 0; i < d.y.rows; ++i){ + for(j = 0; j < d.y.cols; ++j){ + d.y.vals[i][j] = eps * scale + (1-eps) * d.y.vals[i][j]; + } + } +} + +data load_all_cifar10() +{ + data d = {0}; + d.shallow = 0; + int i,j,b; + matrix X = make_matrix(50000, 3072); + matrix y = make_matrix(50000, 10); + d.X = X; + d.y = y; + + + for(b = 0; b < 5; ++b){ + char buff[256]; + sprintf(buff, "data/cifar/cifar-10-batches-bin/data_batch_%d.bin", b+1); + FILE *fp = fopen(buff, "rb"); + if(!fp) file_error(buff); + for(i = 0; i < 10000; ++i){ + unsigned char bytes[3073]; + fread(bytes, 1, 3073, fp); + int class = bytes[0]; + y.vals[i+b*10000][class] = 1; + for(j = 0; j < X.cols; ++j){ + X.vals[i+b*10000][j] = (double)bytes[j+1]; + } + } + fclose(fp); + } + //normalize_data_rows(d); + scale_data_rows(d, 1./255); + smooth_data(d); + return d; +} + +data load_go(char *filename) +{ + FILE *fp = fopen(filename, "rb"); + matrix X = make_matrix(3363059, 361); + matrix y = make_matrix(3363059, 361); + int row, col; + + if(!fp) file_error(filename); + char *label; + int count = 0; + while((label = fgetl(fp))){ + int i; + if(count == X.rows){ + X = resize_matrix(X, count*2); + y = resize_matrix(y, count*2); + } + sscanf(label, "%d %d", &row, &col); + char *board = fgetl(fp); + + int index = row*19 + col; + y.vals[count][index] = 1; + + for(i = 0; i < 19*19; ++i){ + float val = 0; + if(board[i] == '1') val = 1; + else if(board[i] == '2') val = -1; + X.vals[count][i] = val; + } + ++count; + free(label); + free(board); + } + X = resize_matrix(X, count); + y = resize_matrix(y, count); + + data d = {0}; + d.shallow = 0; + d.X = X; + d.y = y; + + + fclose(fp); + + return d; +} + + +void randomize_data(data d) +{ + int i; + for(i = d.X.rows-1; i > 0; --i){ + int index = rand()%i; + float *swap = d.X.vals[index]; + d.X.vals[index] = d.X.vals[i]; + d.X.vals[i] = swap; + + swap = d.y.vals[index]; + d.y.vals[index] = d.y.vals[i]; + d.y.vals[i] = swap; + } +} + +void scale_data_rows(data d, float s) +{ + int i; + for(i = 0; i < d.X.rows; ++i){ + scale_array(d.X.vals[i], d.X.cols, s); + } +} + +void translate_data_rows(data d, float s) +{ + int i; + for(i = 0; i < d.X.rows; ++i){ + translate_array(d.X.vals[i], d.X.cols, s); + } +} + +data copy_data(data d) +{ + data c = {0}; + c.w = d.w; + c.h = d.h; + c.shallow = 0; + c.num_boxes = d.num_boxes; + c.boxes = d.boxes; + c.X = copy_matrix(d.X); + c.y = copy_matrix(d.y); + return c; +} + +void normalize_data_rows(data d) +{ + int i; + for(i = 0; i < d.X.rows; ++i){ + normalize_array(d.X.vals[i], d.X.cols); + } +} + +data get_data_part(data d, int part, int total) +{ + data p = {0}; + p.shallow = 1; + p.X.rows = d.X.rows * (part + 1) / total - d.X.rows * part / total; + p.y.rows = d.y.rows * (part + 1) / total - d.y.rows * part / total; + p.X.cols = d.X.cols; + p.y.cols = d.y.cols; + p.X.vals = d.X.vals + d.X.rows * part / total; + p.y.vals = d.y.vals + d.y.rows * part / total; + return p; +} + +data get_random_data(data d, int num) +{ + data r = {0}; + r.shallow = 1; + + r.X.rows = num; + r.y.rows = num; + + r.X.cols = d.X.cols; + r.y.cols = d.y.cols; + + r.X.vals = calloc(num, sizeof(float *)); + r.y.vals = calloc(num, sizeof(float *)); + + int i; + for(i = 0; i < num; ++i){ + int index = rand()%d.X.rows; + r.X.vals[i] = d.X.vals[index]; + r.y.vals[i] = d.y.vals[index]; + } + return r; +} + +data *split_data(data d, int part, int total) +{ + data *split = calloc(2, sizeof(data)); + int i; + int start = part*d.X.rows/total; + int end = (part+1)*d.X.rows/total; + data train; + data test; + train.shallow = test.shallow = 1; + + test.X.rows = test.y.rows = end-start; + train.X.rows = train.y.rows = d.X.rows - (end-start); + train.X.cols = test.X.cols = d.X.cols; + train.y.cols = test.y.cols = d.y.cols; + + train.X.vals = calloc(train.X.rows, sizeof(float*)); + test.X.vals = calloc(test.X.rows, sizeof(float*)); + train.y.vals = calloc(train.y.rows, sizeof(float*)); + test.y.vals = calloc(test.y.rows, sizeof(float*)); + + for(i = 0; i < start; ++i){ + train.X.vals[i] = d.X.vals[i]; + train.y.vals[i] = d.y.vals[i]; + } + for(i = start; i < end; ++i){ + test.X.vals[i-start] = d.X.vals[i]; + test.y.vals[i-start] = d.y.vals[i]; + } + for(i = end; i < d.X.rows; ++i){ + train.X.vals[i-(end-start)] = d.X.vals[i]; + train.y.vals[i-(end-start)] = d.y.vals[i]; + } + split[0] = train; + split[1] = test; + return split; +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/data.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/data.h" new file mode 100644 index 00000000..781906f8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/data.h" @@ -0,0 +1,50 @@ +#ifndef DATA_H +#define DATA_H +#include + +#include "darknet.h" +#include "matrix.h" +#include "list.h" +#include "image.h" +#include "tree.h" + +static inline float distance_from_edge(int x, int max) +{ + int dx = (max/2) - x; + if (dx < 0) dx = -dx; + dx = (max/2) + 1 - dx; + dx *= 2; + float dist = (float)dx/max; + if (dist > 1) dist = 1; + return dist; +} +void load_data_blocking(load_args args); + + +void print_letters(float *pred, int n); +data load_data_captcha(char **paths, int n, int m, int k, int w, int h); +data load_data_captcha_encode(char **paths, int n, int m, int w, int h); +data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, int classes, float jitter, float hue, float saturation, float exposure); +data load_data_tag(char **paths, int n, int m, int k, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure); +matrix load_image_augment_paths(char **paths, int n, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure, int center); +data load_data_super(char **paths, int n, int m, int w, int h, int scale); +data load_data_augment(char **paths, int n, int m, char **labels, int k, tree *hierarchy, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure, int center); +data load_data_regression(char **paths, int n, int m, int classes, int min, int max, int size, float angle, float aspect, float hue, float saturation, float exposure); +data load_go(char *filename); + + +data load_data_writing(char **paths, int n, int m, int w, int h, int out_w, int out_h); + +void get_random_batch(data d, int n, float *X, float *y); +data get_data_part(data d, int part, int total); +data get_random_data(data d, int num); +data load_categorical_data_csv(char *filename, int target, int k); +void normalize_data_rows(data d); +void scale_data_rows(data d, float s); +void translate_data_rows(data d, float s); +void randomize_data(data d); +data *split_data(data d, int part, int total); +data concat_datas(data *d, int n); +void fill_truth(char *path, char **labels, int k, float *truth); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_kernels.cu" new file mode 100644 index 00000000..8267dcfa --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_kernels.cu" @@ -0,0 +1,139 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "convolutional_layer.h" +#include "deconvolutional_layer.h" +#include "batchnorm_layer.h" +#include "gemm.h" +#include "blas.h" +#include "im2col.h" +#include "col2im.h" +#include "utils.h" +#include "cuda.h" +} + +extern "C" void forward_deconvolutional_layer_gpu(layer l, network net) +{ + int i; + + int m = l.size*l.size*l.n; + int n = l.h*l.w; + int k = l.c; + + fill_gpu(l.outputs*l.batch, 0, l.output_gpu, 1); + + for(i = 0; i < l.batch; ++i){ + float *a = l.weights_gpu; + float *b = net.input_gpu + i*l.c*l.h*l.w; + float *c = net.workspace; + + gemm_gpu(1,0,m,n,k,1,a,m,b,n,0,c,n); + + col2im_gpu(net.workspace, l.out_c, l.out_h, l.out_w, l.size, l.stride, l.pad, l.output_gpu+i*l.outputs); + } + if (l.batch_normalize) { + forward_batchnorm_layer_gpu(l, net); + } else { + add_bias_gpu(l.output_gpu, l.biases_gpu, l.batch, l.n, l.out_w*l.out_h); + } + activate_array_gpu(l.output_gpu, l.batch*l.n*l.out_w*l.out_h, l.activation); +} + +extern "C" void backward_deconvolutional_layer_gpu(layer l, network net) +{ + int i; + + //constrain_gpu(l.outputs*l.batch, 1, l.delta_gpu, 1); + gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); + + if(l.batch_normalize){ + backward_batchnorm_layer_gpu(l, net); + } else { + backward_bias_gpu(l.bias_updates_gpu, l.delta_gpu, l.batch, l.n, l.out_w*l.out_h); + } + + //if(net.delta_gpu) memset(net.delta_gpu, 0, l.batch*l.h*l.w*l.c*sizeof(float)); + + for(i = 0; i < l.batch; ++i){ + int m = l.c; + int n = l.size*l.size*l.n; + int k = l.h*l.w; + + float *a = net.input_gpu + i*m*k; + float *b = net.workspace; + float *c = l.weight_updates_gpu; + + im2col_gpu(l.delta_gpu + i*l.outputs, l.out_c, l.out_h, l.out_w, + l.size, l.stride, l.pad, b); + gemm_gpu(0,1,m,n,k,1,a,k,b,k,1,c,n); + + if(net.delta_gpu){ + int m = l.c; + int n = l.h*l.w; + int k = l.size*l.size*l.n; + + float *a = l.weights_gpu; + float *b = net.workspace; + float *c = net.delta_gpu + i*n*m; + + gemm_gpu(0,0,m,n,k,1,a,k,b,n,1,c,n); + } + } +} + +extern "C" void pull_deconvolutional_layer(layer l) +{ + cuda_pull_array(l.weights_gpu, l.weights, l.c*l.n*l.size*l.size); + cuda_pull_array(l.biases_gpu, l.biases, l.n); + cuda_pull_array(l.weight_updates_gpu, l.weight_updates, l.c*l.n*l.size*l.size); + cuda_pull_array(l.bias_updates_gpu, l.bias_updates, l.n); + if (l.batch_normalize){ + cuda_pull_array(l.scales_gpu, l.scales, l.n); + cuda_pull_array(l.rolling_mean_gpu, l.rolling_mean, l.n); + cuda_pull_array(l.rolling_variance_gpu, l.rolling_variance, l.n); + } +} + +extern "C" void push_deconvolutional_layer(layer l) +{ + cuda_push_array(l.weights_gpu, l.weights, l.c*l.n*l.size*l.size); + cuda_push_array(l.biases_gpu, l.biases, l.n); + cuda_push_array(l.weight_updates_gpu, l.weight_updates, l.c*l.n*l.size*l.size); + cuda_push_array(l.bias_updates_gpu, l.bias_updates, l.n); + if (l.batch_normalize){ + cuda_push_array(l.scales_gpu, l.scales, l.n); + cuda_push_array(l.rolling_mean_gpu, l.rolling_mean, l.n); + cuda_push_array(l.rolling_variance_gpu, l.rolling_variance, l.n); + } +} + +void update_deconvolutional_layer_gpu(layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + + if(a.adam){ + adam_update_gpu(l.weights_gpu, l.weight_updates_gpu, l.m_gpu, l.v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.nweights, batch, a.t); + adam_update_gpu(l.biases_gpu, l.bias_updates_gpu, l.bias_m_gpu, l.bias_v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.n, batch, a.t); + if(l.scales_gpu){ + adam_update_gpu(l.scales_gpu, l.scale_updates_gpu, l.scale_m_gpu, l.scale_v_gpu, a.B1, a.B2, a.eps, decay, learning_rate, l.n, batch, a.t); + } + }else{ + axpy_gpu(l.nweights, -decay*batch, l.weights_gpu, 1, l.weight_updates_gpu, 1); + axpy_gpu(l.nweights, learning_rate/batch, l.weight_updates_gpu, 1, l.weights_gpu, 1); + scal_gpu(l.nweights, momentum, l.weight_updates_gpu, 1); + + axpy_gpu(l.n, learning_rate/batch, l.bias_updates_gpu, 1, l.biases_gpu, 1); + scal_gpu(l.n, momentum, l.bias_updates_gpu, 1); + + if(l.scales_gpu){ + axpy_gpu(l.n, learning_rate/batch, l.scale_updates_gpu, 1, l.scales_gpu, 1); + scal_gpu(l.n, momentum, l.scale_updates_gpu, 1); + } + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_layer.c" new file mode 100644 index 00000000..00c0e857 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_layer.c" @@ -0,0 +1,312 @@ +#include "deconvolutional_layer.h" +#include "convolutional_layer.h" +#include "batchnorm_layer.h" +#include "utils.h" +#include "im2col.h" +#include "col2im.h" +#include "blas.h" +#include "gemm.h" + +#include +#include + + +static size_t get_workspace_size(layer l){ + return (size_t)l.h*l.w*l.size*l.size*l.n*sizeof(float); +} + +void bilinear_init(layer l) +{ + int i,j,f; + float center = (l.size-1) / 2.; + for(f = 0; f < l.n; ++f){ + for(j = 0; j < l.size; ++j){ + for(i = 0; i < l.size; ++i){ + float val = (1 - fabs(i - center)) * (1 - fabs(j - center)); + int c = f%l.c; + int ind = f*l.size*l.size*l.c + c*l.size*l.size + j*l.size + i; + l.weights[ind] = val; + } + } + } +} + + +layer make_deconvolutional_layer(int batch, int h, int w, int c, int n, int size, int stride, int padding, ACTIVATION activation, int batch_normalize, int adam) +{ + int i; + layer l = {0}; + l.type = DECONVOLUTIONAL; + + l.h = h; + l.w = w; + l.c = c; + l.n = n; + l.batch = batch; + l.stride = stride; + l.size = size; + + l.nweights = c*n*size*size; + l.nbiases = n; + + l.weights = calloc(c*n*size*size, sizeof(float)); + l.weight_updates = calloc(c*n*size*size, sizeof(float)); + + l.biases = calloc(n, sizeof(float)); + l.bias_updates = calloc(n, sizeof(float)); + //float scale = n/(size*size*c); + //printf("scale: %f\n", scale); + float scale = .02; + for(i = 0; i < c*n*size*size; ++i) l.weights[i] = scale*rand_normal(); + //bilinear_init(l); + for(i = 0; i < n; ++i){ + l.biases[i] = 0; + } + l.pad = padding; + + l.out_h = (l.h - 1) * l.stride + l.size - 2*l.pad; + l.out_w = (l.w - 1) * l.stride + l.size - 2*l.pad; + l.out_c = n; + l.outputs = l.out_w * l.out_h * l.out_c; + l.inputs = l.w * l.h * l.c; + + scal_cpu(l.nweights, (float)l.out_w*l.out_h/(l.w*l.h), l.weights, 1); + + l.output = calloc(l.batch*l.outputs, sizeof(float)); + l.delta = calloc(l.batch*l.outputs, sizeof(float)); + + l.forward = forward_deconvolutional_layer; + l.backward = backward_deconvolutional_layer; + l.update = update_deconvolutional_layer; + + l.batch_normalize = batch_normalize; + + if(batch_normalize){ + l.scales = calloc(n, sizeof(float)); + l.scale_updates = calloc(n, sizeof(float)); + for(i = 0; i < n; ++i){ + l.scales[i] = 1; + } + + l.mean = calloc(n, sizeof(float)); + l.variance = calloc(n, sizeof(float)); + + l.mean_delta = calloc(n, sizeof(float)); + l.variance_delta = calloc(n, sizeof(float)); + + l.rolling_mean = calloc(n, sizeof(float)); + l.rolling_variance = calloc(n, sizeof(float)); + l.x = calloc(l.batch*l.outputs, sizeof(float)); + l.x_norm = calloc(l.batch*l.outputs, sizeof(float)); + } + if(adam){ + l.m = calloc(c*n*size*size, sizeof(float)); + l.v = calloc(c*n*size*size, sizeof(float)); + l.bias_m = calloc(n, sizeof(float)); + l.scale_m = calloc(n, sizeof(float)); + l.bias_v = calloc(n, sizeof(float)); + l.scale_v = calloc(n, sizeof(float)); + } + +#ifdef GPU + l.forward_gpu = forward_deconvolutional_layer_gpu; + l.backward_gpu = backward_deconvolutional_layer_gpu; + l.update_gpu = update_deconvolutional_layer_gpu; + + if(gpu_index >= 0){ + + if (adam) { + l.m_gpu = cuda_make_array(l.m, c*n*size*size); + l.v_gpu = cuda_make_array(l.v, c*n*size*size); + l.bias_m_gpu = cuda_make_array(l.bias_m, n); + l.bias_v_gpu = cuda_make_array(l.bias_v, n); + l.scale_m_gpu = cuda_make_array(l.scale_m, n); + l.scale_v_gpu = cuda_make_array(l.scale_v, n); + } + l.weights_gpu = cuda_make_array(l.weights, c*n*size*size); + l.weight_updates_gpu = cuda_make_array(l.weight_updates, c*n*size*size); + + l.biases_gpu = cuda_make_array(l.biases, n); + l.bias_updates_gpu = cuda_make_array(l.bias_updates, n); + + l.delta_gpu = cuda_make_array(l.delta, l.batch*l.out_h*l.out_w*n); + l.output_gpu = cuda_make_array(l.output, l.batch*l.out_h*l.out_w*n); + + if(batch_normalize){ + l.mean_gpu = cuda_make_array(0, n); + l.variance_gpu = cuda_make_array(0, n); + + l.rolling_mean_gpu = cuda_make_array(0, n); + l.rolling_variance_gpu = cuda_make_array(0, n); + + l.mean_delta_gpu = cuda_make_array(0, n); + l.variance_delta_gpu = cuda_make_array(0, n); + + l.scales_gpu = cuda_make_array(l.scales, n); + l.scale_updates_gpu = cuda_make_array(0, n); + + l.x_gpu = cuda_make_array(0, l.batch*l.out_h*l.out_w*n); + l.x_norm_gpu = cuda_make_array(0, l.batch*l.out_h*l.out_w*n); + } + } + #ifdef CUDNN + cudnnCreateTensorDescriptor(&l.dstTensorDesc); + cudnnCreateTensorDescriptor(&l.normTensorDesc); + cudnnSetTensor4dDescriptor(l.dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l.batch, l.out_c, l.out_h, l.out_w); + cudnnSetTensor4dDescriptor(l.normTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l.out_c, 1, 1); + #endif +#endif + + l.activation = activation; + l.workspace_size = get_workspace_size(l); + + fprintf(stderr, "deconv%5d %2d x%2d /%2d %4d x%4d x%4d -> %4d x%4d x%4d\n", n, size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c); + + return l; +} + +void denormalize_deconvolutional_layer(layer l) +{ + int i, j; + for(i = 0; i < l.n; ++i){ + float scale = l.scales[i]/sqrt(l.rolling_variance[i] + .00001); + for(j = 0; j < l.c*l.size*l.size; ++j){ + l.weights[i*l.c*l.size*l.size + j] *= scale; + } + l.biases[i] -= l.rolling_mean[i] * scale; + l.scales[i] = 1; + l.rolling_mean[i] = 0; + l.rolling_variance[i] = 1; + } +} + +void resize_deconvolutional_layer(layer *l, int h, int w) +{ + l->h = h; + l->w = w; + l->out_h = (l->h - 1) * l->stride + l->size - 2*l->pad; + l->out_w = (l->w - 1) * l->stride + l->size - 2*l->pad; + + l->outputs = l->out_h * l->out_w * l->out_c; + l->inputs = l->w * l->h * l->c; + + l->output = realloc(l->output, l->batch*l->outputs*sizeof(float)); + l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float)); + if(l->batch_normalize){ + l->x = realloc(l->x, l->batch*l->outputs*sizeof(float)); + l->x_norm = realloc(l->x_norm, l->batch*l->outputs*sizeof(float)); + } + +#ifdef GPU + cuda_free(l->delta_gpu); + cuda_free(l->output_gpu); + + l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs); + l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs); + + if(l->batch_normalize){ + cuda_free(l->x_gpu); + cuda_free(l->x_norm_gpu); + + l->x_gpu = cuda_make_array(l->output, l->batch*l->outputs); + l->x_norm_gpu = cuda_make_array(l->output, l->batch*l->outputs); + } + #ifdef CUDNN + cudnnSetTensor4dDescriptor(l->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, l->batch, l->out_c, l->out_h, l->out_w); + cudnnSetTensor4dDescriptor(l->normTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l->out_c, 1, 1); + #endif +#endif + l->workspace_size = get_workspace_size(*l); +} + +void forward_deconvolutional_layer(const layer l, network net) +{ + int i; + + int m = l.size*l.size*l.n; + int n = l.h*l.w; + int k = l.c; + + fill_cpu(l.outputs*l.batch, 0, l.output, 1); + + for(i = 0; i < l.batch; ++i){ + float *a = l.weights; + float *b = net.input + i*l.c*l.h*l.w; + float *c = net.workspace; + + gemm_cpu(1,0,m,n,k,1,a,m,b,n,0,c,n); + + col2im_cpu(net.workspace, l.out_c, l.out_h, l.out_w, l.size, l.stride, l.pad, l.output+i*l.outputs); + } + if (l.batch_normalize) { + forward_batchnorm_layer(l, net); + } else { + add_bias(l.output, l.biases, l.batch, l.n, l.out_w*l.out_h); + } + activate_array(l.output, l.batch*l.n*l.out_w*l.out_h, l.activation); +} + +void backward_deconvolutional_layer(layer l, network net) +{ + int i; + + gradient_array(l.output, l.outputs*l.batch, l.activation, l.delta); + + if(l.batch_normalize){ + backward_batchnorm_layer(l, net); + } else { + backward_bias(l.bias_updates, l.delta, l.batch, l.n, l.out_w*l.out_h); + } + + //if(net.delta) memset(net.delta, 0, l.batch*l.h*l.w*l.c*sizeof(float)); + + for(i = 0; i < l.batch; ++i){ + int m = l.c; + int n = l.size*l.size*l.n; + int k = l.h*l.w; + + float *a = net.input + i*m*k; + float *b = net.workspace; + float *c = l.weight_updates; + + im2col_cpu(l.delta + i*l.outputs, l.out_c, l.out_h, l.out_w, + l.size, l.stride, l.pad, b); + gemm_cpu(0,1,m,n,k,1,a,k,b,k,1,c,n); + + if(net.delta){ + int m = l.c; + int n = l.h*l.w; + int k = l.size*l.size*l.n; + + float *a = l.weights; + float *b = net.workspace; + float *c = net.delta + i*n*m; + + gemm_cpu(0,0,m,n,k,1,a,k,b,n,1,c,n); + } + } +} + +void update_deconvolutional_layer(layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + + int size = l.size*l.size*l.c*l.n; + axpy_cpu(l.n, learning_rate/batch, l.bias_updates, 1, l.biases, 1); + scal_cpu(l.n, momentum, l.bias_updates, 1); + + if(l.scales){ + axpy_cpu(l.n, learning_rate/batch, l.scale_updates, 1, l.scales, 1); + scal_cpu(l.n, momentum, l.scale_updates, 1); + } + + axpy_cpu(size, -decay*batch, l.weights, 1, l.weight_updates, 1); + axpy_cpu(size, learning_rate/batch, l.weight_updates, 1, l.weights, 1); + scal_cpu(size, momentum, l.weight_updates, 1); +} + + + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_layer.h" new file mode 100644 index 00000000..b254fb91 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/deconvolutional_layer.h" @@ -0,0 +1,25 @@ +#ifndef DECONVOLUTIONAL_LAYER_H +#define DECONVOLUTIONAL_LAYER_H + +#include "cuda.h" +#include "image.h" +#include "activations.h" +#include "layer.h" +#include "network.h" + +#ifdef GPU +void forward_deconvolutional_layer_gpu(layer l, network net); +void backward_deconvolutional_layer_gpu(layer l, network net); +void update_deconvolutional_layer_gpu(layer l, update_args a); +void push_deconvolutional_layer(layer l); +void pull_deconvolutional_layer(layer l); +#endif + +layer make_deconvolutional_layer(int batch, int h, int w, int c, int n, int size, int stride, int padding, ACTIVATION activation, int batch_normalize, int adam); +void resize_deconvolutional_layer(layer *l, int h, int w); +void forward_deconvolutional_layer(const layer l, network net); +void update_deconvolutional_layer(layer l, update_args a); +void backward_deconvolutional_layer(layer l, network net); + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/demo.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/demo.c" new file mode 100644 index 00000000..b89efb8d --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/demo.c" @@ -0,0 +1,349 @@ +#include "network.h" +#include "detection_layer.h" +#include "region_layer.h" +#include "cost_layer.h" +#include "utils.h" +#include "parser.h" +#include "box.h" +#include "image.h" +#include "demo.h" +#include + +#define DEMO 1 + +#ifdef OPENCV + +static char **demo_names; +static image **demo_alphabet; +static int demo_classes; + +static network *net; +static image buff [3]; +static image buff_letter[3]; +static int buff_index = 0; +static void * cap; +static float fps = 0; +static float demo_thresh = 0; +static float demo_hier = .5; +static int running = 0; + +static int demo_frame = 3; +static int demo_index = 0; +static float **predictions; +static float *avg; +static int demo_done = 0; +static int demo_total = 0; +double demo_time; + +detection *get_network_boxes(network *net, int w, int h, float thresh, float hier, int *map, int relative, int *num); + +int size_network(network *net) +{ + int i; + int count = 0; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == YOLO || l.type == REGION || l.type == DETECTION){ + count += l.outputs; + } + } + return count; +} + +void remember_network(network *net) +{ + int i; + int count = 0; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == YOLO || l.type == REGION || l.type == DETECTION){ + memcpy(predictions[demo_index] + count, net->layers[i].output, sizeof(float) * l.outputs); + count += l.outputs; + } + } +} + +detection *avg_predictions(network *net, int *nboxes) +{ + int i, j; + int count = 0; + fill_cpu(demo_total, 0, avg, 1); + for(j = 0; j < demo_frame; ++j){ + axpy_cpu(demo_total, 1./demo_frame, predictions[j], 1, avg, 1); + } + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == YOLO || l.type == REGION || l.type == DETECTION){ + memcpy(l.output, avg + count, sizeof(float) * l.outputs); + count += l.outputs; + } + } + detection *dets = get_network_boxes(net, buff[0].w, buff[0].h, demo_thresh, demo_hier, 0, 1, nboxes); + return dets; +} + +void *detect_in_thread(void *ptr) +{ + running = 1; + float nms = .4; + + layer l = net->layers[net->n-1]; + float *X = buff_letter[(buff_index+2)%3].data; + network_predict(net, X); + + /* + if(l.type == DETECTION){ + get_detection_boxes(l, 1, 1, demo_thresh, probs, boxes, 0); + } else */ + remember_network(net); + detection *dets = 0; + int nboxes = 0; + dets = avg_predictions(net, &nboxes); + + + /* + int i,j; + box zero = {0}; + int classes = l.classes; + for(i = 0; i < demo_detections; ++i){ + avg[i].objectness = 0; + avg[i].bbox = zero; + memset(avg[i].prob, 0, classes*sizeof(float)); + for(j = 0; j < demo_frame; ++j){ + axpy_cpu(classes, 1./demo_frame, dets[j][i].prob, 1, avg[i].prob, 1); + avg[i].objectness += dets[j][i].objectness * 1./demo_frame; + avg[i].bbox.x += dets[j][i].bbox.x * 1./demo_frame; + avg[i].bbox.y += dets[j][i].bbox.y * 1./demo_frame; + avg[i].bbox.w += dets[j][i].bbox.w * 1./demo_frame; + avg[i].bbox.h += dets[j][i].bbox.h * 1./demo_frame; + } + //copy_cpu(classes, dets[0][i].prob, 1, avg[i].prob, 1); + //avg[i].objectness = dets[0][i].objectness; + } + */ + + if (nms > 0) do_nms_obj(dets, nboxes, l.classes, nms); + + printf("\033[2J"); + printf("\033[1;1H"); + printf("\nFPS:%.1f\n",fps); + printf("Objects:\n\n"); + image display = buff[(buff_index+2) % 3]; + draw_detections(display, dets, nboxes, demo_thresh, demo_names, demo_alphabet, demo_classes); + free_detections(dets, nboxes); + + demo_index = (demo_index + 1)%demo_frame; + running = 0; + return 0; +} + +void *fetch_in_thread(void *ptr) +{ + free_image(buff[buff_index]); + buff[buff_index] = get_image_from_stream(cap); + if(buff[buff_index].data == 0) { + demo_done = 1; + return 0; + } + letterbox_image_into(buff[buff_index], net->w, net->h, buff_letter[buff_index]); + return 0; +} + +void *display_in_thread(void *ptr) +{ + int c = show_image(buff[(buff_index + 1)%3], "Demo", 1); + if (c != -1) c = c%256; + if (c == 27) { + demo_done = 1; + return 0; + } else if (c == 82) { + demo_thresh += .02; + } else if (c == 84) { + demo_thresh -= .02; + if(demo_thresh <= .02) demo_thresh = .02; + } else if (c == 83) { + demo_hier += .02; + } else if (c == 81) { + demo_hier -= .02; + if(demo_hier <= .0) demo_hier = .0; + } + return 0; +} + +void *display_loop(void *ptr) +{ + while(1){ + display_in_thread(0); + } +} + +void *detect_loop(void *ptr) +{ + while(1){ + detect_in_thread(0); + } +} + +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int delay, char *prefix, int avg_frames, float hier, int w, int h, int frames, int fullscreen) +{ + //demo_frame = avg_frames; + image **alphabet = load_alphabet(); + demo_names = names; + demo_alphabet = alphabet; + demo_classes = classes; + demo_thresh = thresh; + demo_hier = hier; + printf("Demo\n"); + net = load_network(cfgfile, weightfile, 0); + set_batch_network(net, 1); + pthread_t detect_thread; + pthread_t fetch_thread; + + srand(2222222); + + int i; + demo_total = size_network(net); + predictions = calloc(demo_frame, sizeof(float*)); + for (i = 0; i < demo_frame; ++i){ + predictions[i] = calloc(demo_total, sizeof(float)); + } + avg = calloc(demo_total, sizeof(float)); + + if(filename){ + printf("video file: %s\n", filename); + cap = open_video_stream(filename, 0, 0, 0, 0); + }else{ + cap = open_video_stream(0, cam_index, w, h, frames); + } + + if(!cap) error("Couldn't connect to webcam.\n"); + + buff[0] = get_image_from_stream(cap); + buff[1] = copy_image(buff[0]); + buff[2] = copy_image(buff[0]); + buff_letter[0] = letterbox_image(buff[0], net->w, net->h); + buff_letter[1] = letterbox_image(buff[0], net->w, net->h); + buff_letter[2] = letterbox_image(buff[0], net->w, net->h); + + int count = 0; + if(!prefix){ + make_window("Demo", 1352, 1013, fullscreen); + } + + demo_time = what_time_is_it_now(); + + while(!demo_done){ + buff_index = (buff_index + 1) %3; + if(pthread_create(&fetch_thread, 0, fetch_in_thread, 0)) error("Thread creation failed"); + if(pthread_create(&detect_thread, 0, detect_in_thread, 0)) error("Thread creation failed"); + if(!prefix){ + fps = 1./(what_time_is_it_now() - demo_time); + demo_time = what_time_is_it_now(); + display_in_thread(0); + }else{ + char name[256]; + sprintf(name, "%s_%08d", prefix, count); + save_image(buff[(buff_index + 1)%3], name); + } + pthread_join(fetch_thread, 0); + pthread_join(detect_thread, 0); + ++count; + } +} + +/* + void demo_compare(char *cfg1, char *weight1, char *cfg2, char *weight2, float thresh, int cam_index, const char *filename, char **names, int classes, int delay, char *prefix, int avg_frames, float hier, int w, int h, int frames, int fullscreen) + { + demo_frame = avg_frames; + predictions = calloc(demo_frame, sizeof(float*)); + image **alphabet = load_alphabet(); + demo_names = names; + demo_alphabet = alphabet; + demo_classes = classes; + demo_thresh = thresh; + demo_hier = hier; + printf("Demo\n"); + net = load_network(cfg1, weight1, 0); + set_batch_network(net, 1); + pthread_t detect_thread; + pthread_t fetch_thread; + + srand(2222222); + + if(filename){ + printf("video file: %s\n", filename); + cap = cvCaptureFromFile(filename); + }else{ + cap = cvCaptureFromCAM(cam_index); + + if(w){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH, w); + } + if(h){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT, h); + } + if(frames){ + cvSetCaptureProperty(cap, CV_CAP_PROP_FPS, frames); + } + } + + if(!cap) error("Couldn't connect to webcam.\n"); + + layer l = net->layers[net->n-1]; + demo_detections = l.n*l.w*l.h; + int j; + + avg = (float *) calloc(l.outputs, sizeof(float)); + for(j = 0; j < demo_frame; ++j) predictions[j] = (float *) calloc(l.outputs, sizeof(float)); + + boxes = (box *)calloc(l.w*l.h*l.n, sizeof(box)); + probs = (float **)calloc(l.w*l.h*l.n, sizeof(float *)); + for(j = 0; j < l.w*l.h*l.n; ++j) probs[j] = (float *)calloc(l.classes+1, sizeof(float)); + + buff[0] = get_image_from_stream(cap); + buff[1] = copy_image(buff[0]); + buff[2] = copy_image(buff[0]); + buff_letter[0] = letterbox_image(buff[0], net->w, net->h); + buff_letter[1] = letterbox_image(buff[0], net->w, net->h); + buff_letter[2] = letterbox_image(buff[0], net->w, net->h); + ipl = cvCreateImage(cvSize(buff[0].w,buff[0].h), IPL_DEPTH_8U, buff[0].c); + + int count = 0; + if(!prefix){ + cvNamedWindow("Demo", CV_WINDOW_NORMAL); + if(fullscreen){ + cvSetWindowProperty("Demo", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN); + } else { + cvMoveWindow("Demo", 0, 0); + cvResizeWindow("Demo", 1352, 1013); + } + } + + demo_time = what_time_is_it_now(); + + while(!demo_done){ +buff_index = (buff_index + 1) %3; +if(pthread_create(&fetch_thread, 0, fetch_in_thread, 0)) error("Thread creation failed"); +if(pthread_create(&detect_thread, 0, detect_in_thread, 0)) error("Thread creation failed"); +if(!prefix){ + fps = 1./(what_time_is_it_now() - demo_time); + demo_time = what_time_is_it_now(); + display_in_thread(0); +}else{ + char name[256]; + sprintf(name, "%s_%08d", prefix, count); + save_image(buff[(buff_index + 1)%3], name); +} +pthread_join(fetch_thread, 0); +pthread_join(detect_thread, 0); +++count; +} +} +*/ +#else +void demo(char *cfgfile, char *weightfile, float thresh, int cam_index, const char *filename, char **names, int classes, int delay, char *prefix, int avg, float hier, int w, int h, int frames, int fullscreen) +{ + fprintf(stderr, "Demo needs OpenCV for webcam images.\n"); +} +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/demo.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/demo.h" new file mode 100644 index 00000000..86e46541 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/demo.h" @@ -0,0 +1,6 @@ +#ifndef DEMO_H +#define DEMO_H + +#include "image.h" + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/detection_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/detection_layer.c" new file mode 100644 index 00000000..d0e0194b --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/detection_layer.c" @@ -0,0 +1,275 @@ +#include "detection_layer.h" +#include "activations.h" +#include "softmax_layer.h" +#include "blas.h" +#include "box.h" +#include "cuda.h" +#include "utils.h" + +#include +#include +#include +#include + +detection_layer make_detection_layer(int batch, int inputs, int n, int side, int classes, int coords, int rescore) +{ + detection_layer l = {0}; + l.type = DETECTION; + + l.n = n; + l.batch = batch; + l.inputs = inputs; + l.classes = classes; + l.coords = coords; + l.rescore = rescore; + l.side = side; + l.w = side; + l.h = side; + assert(side*side*((1 + l.coords)*l.n + l.classes) == inputs); + l.cost = calloc(1, sizeof(float)); + l.outputs = l.inputs; + l.truths = l.side*l.side*(1+l.coords+l.classes); + l.output = calloc(batch*l.outputs, sizeof(float)); + l.delta = calloc(batch*l.outputs, sizeof(float)); + + l.forward = forward_detection_layer; + l.backward = backward_detection_layer; +#ifdef GPU + l.forward_gpu = forward_detection_layer_gpu; + l.backward_gpu = backward_detection_layer_gpu; + l.output_gpu = cuda_make_array(l.output, batch*l.outputs); + l.delta_gpu = cuda_make_array(l.delta, batch*l.outputs); +#endif + + fprintf(stderr, "Detection Layer\n"); + srand(0); + + return l; +} + +void forward_detection_layer(const detection_layer l, network net) +{ + int locations = l.side*l.side; + int i,j; + memcpy(l.output, net.input, l.outputs*l.batch*sizeof(float)); + //if(l.reorg) reorg(l.output, l.w*l.h, size*l.n, l.batch, 1); + int b; + if (l.softmax){ + for(b = 0; b < l.batch; ++b){ + int index = b*l.inputs; + for (i = 0; i < locations; ++i) { + int offset = i*l.classes; + softmax(l.output + index + offset, l.classes, 1, 1, + l.output + index + offset); + } + } + } + if(net.train){ + float avg_iou = 0; + float avg_cat = 0; + float avg_allcat = 0; + float avg_obj = 0; + float avg_anyobj = 0; + int count = 0; + *(l.cost) = 0; + int size = l.inputs * l.batch; + memset(l.delta, 0, size * sizeof(float)); + for (b = 0; b < l.batch; ++b){ + int index = b*l.inputs; + for (i = 0; i < locations; ++i) { + int truth_index = (b*locations + i)*(1+l.coords+l.classes); + int is_obj = net.truth[truth_index]; + for (j = 0; j < l.n; ++j) { + int p_index = index + locations*l.classes + i*l.n + j; + l.delta[p_index] = l.noobject_scale*(0 - l.output[p_index]); + *(l.cost) += l.noobject_scale*pow(l.output[p_index], 2); + avg_anyobj += l.output[p_index]; + } + + int best_index = -1; + float best_iou = 0; + float best_rmse = 20; + + if (!is_obj){ + continue; + } + + int class_index = index + i*l.classes; + for(j = 0; j < l.classes; ++j) { + l.delta[class_index+j] = l.class_scale * (net.truth[truth_index+1+j] - l.output[class_index+j]); + *(l.cost) += l.class_scale * pow(net.truth[truth_index+1+j] - l.output[class_index+j], 2); + if(net.truth[truth_index + 1 + j]) avg_cat += l.output[class_index+j]; + avg_allcat += l.output[class_index+j]; + } + + box truth = float_to_box(net.truth + truth_index + 1 + l.classes, 1); + truth.x /= l.side; + truth.y /= l.side; + + for(j = 0; j < l.n; ++j){ + int box_index = index + locations*(l.classes + l.n) + (i*l.n + j) * l.coords; + box out = float_to_box(l.output + box_index, 1); + out.x /= l.side; + out.y /= l.side; + + if (l.sqrt){ + out.w = out.w*out.w; + out.h = out.h*out.h; + } + + float iou = box_iou(out, truth); + //iou = 0; + float rmse = box_rmse(out, truth); + if(best_iou > 0 || iou > 0){ + if(iou > best_iou){ + best_iou = iou; + best_index = j; + } + }else{ + if(rmse < best_rmse){ + best_rmse = rmse; + best_index = j; + } + } + } + + if(l.forced){ + if(truth.w*truth.h < .1){ + best_index = 1; + }else{ + best_index = 0; + } + } + if(l.random && *(net.seen) < 64000){ + best_index = rand()%l.n; + } + + int box_index = index + locations*(l.classes + l.n) + (i*l.n + best_index) * l.coords; + int tbox_index = truth_index + 1 + l.classes; + + box out = float_to_box(l.output + box_index, 1); + out.x /= l.side; + out.y /= l.side; + if (l.sqrt) { + out.w = out.w*out.w; + out.h = out.h*out.h; + } + float iou = box_iou(out, truth); + + //printf("%d,", best_index); + int p_index = index + locations*l.classes + i*l.n + best_index; + *(l.cost) -= l.noobject_scale * pow(l.output[p_index], 2); + *(l.cost) += l.object_scale * pow(1-l.output[p_index], 2); + avg_obj += l.output[p_index]; + l.delta[p_index] = l.object_scale * (1.-l.output[p_index]); + + if(l.rescore){ + l.delta[p_index] = l.object_scale * (iou - l.output[p_index]); + } + + l.delta[box_index+0] = l.coord_scale*(net.truth[tbox_index + 0] - l.output[box_index + 0]); + l.delta[box_index+1] = l.coord_scale*(net.truth[tbox_index + 1] - l.output[box_index + 1]); + l.delta[box_index+2] = l.coord_scale*(net.truth[tbox_index + 2] - l.output[box_index + 2]); + l.delta[box_index+3] = l.coord_scale*(net.truth[tbox_index + 3] - l.output[box_index + 3]); + if(l.sqrt){ + l.delta[box_index+2] = l.coord_scale*(sqrt(net.truth[tbox_index + 2]) - l.output[box_index + 2]); + l.delta[box_index+3] = l.coord_scale*(sqrt(net.truth[tbox_index + 3]) - l.output[box_index + 3]); + } + + *(l.cost) += pow(1-iou, 2); + avg_iou += iou; + ++count; + } + } + + if(0){ + float *costs = calloc(l.batch*locations*l.n, sizeof(float)); + for (b = 0; b < l.batch; ++b) { + int index = b*l.inputs; + for (i = 0; i < locations; ++i) { + for (j = 0; j < l.n; ++j) { + int p_index = index + locations*l.classes + i*l.n + j; + costs[b*locations*l.n + i*l.n + j] = l.delta[p_index]*l.delta[p_index]; + } + } + } + int indexes[100]; + top_k(costs, l.batch*locations*l.n, 100, indexes); + float cutoff = costs[indexes[99]]; + for (b = 0; b < l.batch; ++b) { + int index = b*l.inputs; + for (i = 0; i < locations; ++i) { + for (j = 0; j < l.n; ++j) { + int p_index = index + locations*l.classes + i*l.n + j; + if (l.delta[p_index]*l.delta[p_index] < cutoff) l.delta[p_index] = 0; + } + } + } + free(costs); + } + + + *(l.cost) = pow(mag_array(l.delta, l.outputs * l.batch), 2); + + + printf("Detection Avg IOU: %f, Pos Cat: %f, All Cat: %f, Pos Obj: %f, Any Obj: %f, count: %d\n", avg_iou/count, avg_cat/count, avg_allcat/(count*l.classes), avg_obj/count, avg_anyobj/(l.batch*locations*l.n), count); + //if(l.reorg) reorg(l.delta, l.w*l.h, size*l.n, l.batch, 0); + } +} + +void backward_detection_layer(const detection_layer l, network net) +{ + axpy_cpu(l.batch*l.inputs, 1, l.delta, 1, net.delta, 1); +} + +void get_detection_detections(layer l, int w, int h, float thresh, detection *dets) +{ + int i,j,n; + float *predictions = l.output; + //int per_cell = 5*num+classes; + for (i = 0; i < l.side*l.side; ++i){ + int row = i / l.side; + int col = i % l.side; + for(n = 0; n < l.n; ++n){ + int index = i*l.n + n; + int p_index = l.side*l.side*l.classes + i*l.n + n; + float scale = predictions[p_index]; + int box_index = l.side*l.side*(l.classes + l.n) + (i*l.n + n)*4; + box b; + b.x = (predictions[box_index + 0] + col) / l.side * w; + b.y = (predictions[box_index + 1] + row) / l.side * h; + b.w = pow(predictions[box_index + 2], (l.sqrt?2:1)) * w; + b.h = pow(predictions[box_index + 3], (l.sqrt?2:1)) * h; + dets[index].bbox = b; + dets[index].objectness = scale; + for(j = 0; j < l.classes; ++j){ + int class_index = i*l.classes; + float prob = scale*predictions[class_index+j]; + dets[index].prob[j] = (prob > thresh) ? prob : 0; + } + } + } +} + +#ifdef GPU + +void forward_detection_layer_gpu(const detection_layer l, network net) +{ + if(!net.train){ + copy_gpu(l.batch*l.inputs, net.input_gpu, 1, l.output_gpu, 1); + return; + } + + cuda_pull_array(net.input_gpu, net.input, l.batch*l.inputs); + forward_detection_layer(l, net); + cuda_push_array(l.output_gpu, l.output, l.batch*l.outputs); + cuda_push_array(l.delta_gpu, l.delta, l.batch*l.inputs); +} + +void backward_detection_layer_gpu(detection_layer l, network net) +{ + axpy_gpu(l.batch*l.inputs, 1, l.delta_gpu, 1, net.delta_gpu, 1); + //copy_gpu(l.batch*l.inputs, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/detection_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/detection_layer.h" new file mode 100644 index 00000000..1c818535 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/detection_layer.h" @@ -0,0 +1,18 @@ +#ifndef DETECTION_LAYER_H +#define DETECTION_LAYER_H + +#include "layer.h" +#include "network.h" + +typedef layer detection_layer; + +detection_layer make_detection_layer(int batch, int inputs, int n, int size, int classes, int coords, int rescore); +void forward_detection_layer(const detection_layer l, network net); +void backward_detection_layer(const detection_layer l, network net); + +#ifdef GPU +void forward_detection_layer_gpu(const detection_layer l, network net); +void backward_detection_layer_gpu(detection_layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer.c" new file mode 100644 index 00000000..780554fb --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer.c" @@ -0,0 +1,60 @@ +#include "dropout_layer.h" +#include "utils.h" +#include "cuda.h" +#include +#include + +dropout_layer make_dropout_layer(int batch, int inputs, float probability) +{ + dropout_layer l = {0}; + l.type = DROPOUT; + l.probability = probability; + l.inputs = inputs; + l.outputs = inputs; + l.batch = batch; + l.rand = calloc(inputs*batch, sizeof(float)); + l.scale = 1./(1.-probability); + l.forward = forward_dropout_layer; + l.backward = backward_dropout_layer; + #ifdef GPU + l.forward_gpu = forward_dropout_layer_gpu; + l.backward_gpu = backward_dropout_layer_gpu; + l.rand_gpu = cuda_make_array(l.rand, inputs*batch); + #endif + fprintf(stderr, "dropout p = %.2f %4d -> %4d\n", probability, inputs, inputs); + return l; +} + +void resize_dropout_layer(dropout_layer *l, int inputs) +{ + l->rand = realloc(l->rand, l->inputs*l->batch*sizeof(float)); + #ifdef GPU + cuda_free(l->rand_gpu); + + l->rand_gpu = cuda_make_array(l->rand, inputs*l->batch); + #endif +} + +void forward_dropout_layer(dropout_layer l, network net) +{ + int i; + if (!net.train) return; + for(i = 0; i < l.batch * l.inputs; ++i){ + float r = rand_uniform(0, 1); + l.rand[i] = r; + if(r < l.probability) net.input[i] = 0; + else net.input[i] *= l.scale; + } +} + +void backward_dropout_layer(dropout_layer l, network net) +{ + int i; + if(!net.delta) return; + for(i = 0; i < l.batch * l.inputs; ++i){ + float r = l.rand[i]; + if(r < l.probability) net.delta[i] = 0; + else net.delta[i] *= l.scale; + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer.h" new file mode 100644 index 00000000..01f94d4d --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer.h" @@ -0,0 +1,20 @@ +#ifndef DROPOUT_LAYER_H +#define DROPOUT_LAYER_H + +#include "layer.h" +#include "network.h" + +typedef layer dropout_layer; + +dropout_layer make_dropout_layer(int batch, int inputs, float probability); + +void forward_dropout_layer(dropout_layer l, network net); +void backward_dropout_layer(dropout_layer l, network net); +void resize_dropout_layer(dropout_layer *l, int inputs); + +#ifdef GPU +void forward_dropout_layer_gpu(dropout_layer l, network net); +void backward_dropout_layer_gpu(dropout_layer l, network net); + +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer_kernels.cu" new file mode 100644 index 00000000..bd12b678 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/dropout_layer_kernels.cu" @@ -0,0 +1,41 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "dropout_layer.h" +#include "cuda.h" +#include "utils.h" +} + +__global__ void yoloswag420blazeit360noscope(float *input, int size, float *rand, float prob, float scale) +{ + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id < size) input[id] = (rand[id] < prob) ? 0 : input[id]*scale; +} + +void forward_dropout_layer_gpu(dropout_layer layer, network net) +{ + if (!net.train) return; + int size = layer.inputs*layer.batch; + cuda_random(layer.rand_gpu, size); + /* + int i; + for(i = 0; i < size; ++i){ + layer.rand[i] = rand_uniform(); + } + cuda_push_array(layer.rand_gpu, layer.rand, size); + */ + + yoloswag420blazeit360noscope<<>>(net.input_gpu, size, layer.rand_gpu, layer.probability, layer.scale); + check_error(cudaPeekAtLastError()); +} + +void backward_dropout_layer_gpu(dropout_layer layer, network net) +{ + if(!net.delta_gpu) return; + int size = layer.inputs*layer.batch; + + yoloswag420blazeit360noscope<<>>(net.delta_gpu, size, layer.rand_gpu, layer.probability, layer.scale); + check_error(cudaPeekAtLastError()); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/gemm.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/gemm.c" new file mode 100644 index 00000000..648027f2 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/gemm.c" @@ -0,0 +1,324 @@ +#include "gemm.h" +#include "utils.h" +#include "cuda.h" +#include +#include +#include + +void gemm_bin(int M, int N, int K, float ALPHA, + char *A, int lda, + float *B, int ldb, + float *C, int ldc) +{ + int i,j,k; + for(i = 0; i < M; ++i){ + for(k = 0; k < K; ++k){ + char A_PART = A[i*lda+k]; + if(A_PART){ + for(j = 0; j < N; ++j){ + C[i*ldc+j] += B[k*ldb+j]; + } + } else { + for(j = 0; j < N; ++j){ + C[i*ldc+j] -= B[k*ldb+j]; + } + } + } + } +} + +float *random_matrix(int rows, int cols) +{ + int i; + float *m = calloc(rows*cols, sizeof(float)); + for(i = 0; i < rows*cols; ++i){ + m[i] = (float)rand()/RAND_MAX; + } + return m; +} + +void time_random_matrix(int TA, int TB, int m, int k, int n) +{ + float *a; + if(!TA) a = random_matrix(m,k); + else a = random_matrix(k,m); + int lda = (!TA)?k:m; + float *b; + if(!TB) b = random_matrix(k,n); + else b = random_matrix(n,k); + int ldb = (!TB)?n:k; + + float *c = random_matrix(m,n); + int i; + clock_t start = clock(), end; + for(i = 0; i<10; ++i){ + gemm_cpu(TA,TB,m,n,k,1,a,lda,b,ldb,1,c,n); + } + end = clock(); + printf("Matrix Multiplication %dx%d * %dx%d, TA=%d, TB=%d: %lf ms\n",m,k,k,n, TA, TB, (float)(end-start)/CLOCKS_PER_SEC); + free(a); + free(b); + free(c); +} + + +void gemm(int TA, int TB, int M, int N, int K, float ALPHA, + float *A, int lda, + float *B, int ldb, + float BETA, + float *C, int ldc) +{ + gemm_cpu( TA, TB, M, N, K, ALPHA,A,lda, B, ldb,BETA,C,ldc); +} + +void gemm_nn(int M, int N, int K, float ALPHA, + float *A, int lda, + float *B, int ldb, + float *C, int ldc) +{ + int i,j,k; + #pragma omp parallel for + for(i = 0; i < M; ++i){ + for(k = 0; k < K; ++k){ + register float A_PART = ALPHA*A[i*lda+k]; + for(j = 0; j < N; ++j){ + C[i*ldc+j] += A_PART*B[k*ldb+j]; + } + } + } +} + +void gemm_nt(int M, int N, int K, float ALPHA, + float *A, int lda, + float *B, int ldb, + float *C, int ldc) +{ + int i,j,k; + #pragma omp parallel for + for(i = 0; i < M; ++i){ + for(j = 0; j < N; ++j){ + register float sum = 0; + for(k = 0; k < K; ++k){ + sum += ALPHA*A[i*lda+k]*B[j*ldb + k]; + } + C[i*ldc+j] += sum; + } + } +} + +void gemm_tn(int M, int N, int K, float ALPHA, + float *A, int lda, + float *B, int ldb, + float *C, int ldc) +{ + int i,j,k; + #pragma omp parallel for + for(i = 0; i < M; ++i){ + for(k = 0; k < K; ++k){ + register float A_PART = ALPHA*A[k*lda+i]; + for(j = 0; j < N; ++j){ + C[i*ldc+j] += A_PART*B[k*ldb+j]; + } + } + } +} + +void gemm_tt(int M, int N, int K, float ALPHA, + float *A, int lda, + float *B, int ldb, + float *C, int ldc) +{ + int i,j,k; + #pragma omp parallel for + for(i = 0; i < M; ++i){ + for(j = 0; j < N; ++j){ + register float sum = 0; + for(k = 0; k < K; ++k){ + sum += ALPHA*A[i+k*lda]*B[k+j*ldb]; + } + C[i*ldc+j] += sum; + } + } +} + + +void gemm_cpu(int TA, int TB, int M, int N, int K, float ALPHA, + float *A, int lda, + float *B, int ldb, + float BETA, + float *C, int ldc) +{ + //printf("cpu: %d %d %d %d %d %f %d %d %f %d\n",TA, TB, M, N, K, ALPHA, lda, ldb, BETA, ldc); + int i, j; + for(i = 0; i < M; ++i){ + for(j = 0; j < N; ++j){ + C[i*ldc + j] *= BETA; + } + } + if(!TA && !TB) + gemm_nn(M, N, K, ALPHA,A,lda, B, ldb,C,ldc); + else if(TA && !TB) + gemm_tn(M, N, K, ALPHA,A,lda, B, ldb,C,ldc); + else if(!TA && TB) + gemm_nt(M, N, K, ALPHA,A,lda, B, ldb,C,ldc); + else + gemm_tt(M, N, K, ALPHA,A,lda, B, ldb,C,ldc); +} + +#ifdef GPU + +#include + +void gemm_gpu(int TA, int TB, int M, int N, int K, float ALPHA, + float *A_gpu, int lda, + float *B_gpu, int ldb, + float BETA, + float *C_gpu, int ldc) +{ + cublasHandle_t handle = blas_handle(); + cudaError_t status = cublasSgemm(handle, (TB ? CUBLAS_OP_T : CUBLAS_OP_N), + (TA ? CUBLAS_OP_T : CUBLAS_OP_N), N, M, K, &ALPHA, B_gpu, ldb, A_gpu, lda, &BETA, C_gpu, ldc); + check_error(status); +} + +#include +#include +#include +#include + +void time_gpu_random_matrix(int TA, int TB, int m, int k, int n) +{ + float *a; + if(!TA) a = random_matrix(m,k); + else a = random_matrix(k,m); + int lda = (!TA)?k:m; + float *b; + if(!TB) b = random_matrix(k,n); + else b = random_matrix(n,k); + int ldb = (!TB)?n:k; + + float *c = random_matrix(m,n); + int i; + clock_t start = clock(), end; + for(i = 0; i<32; ++i){ + gemm_gpu(TA,TB,m,n,k,1,a,lda,b,ldb,1,c,n); + } + end = clock(); + printf("Matrix Multiplication %dx%d * %dx%d, TA=%d, TB=%d: %lf s\n",m,k,k,n, TA, TB, (float)(end-start)/CLOCKS_PER_SEC); + free(a); + free(b); + free(c); +} + +void time_gpu(int TA, int TB, int m, int k, int n) +{ + int iter = 10; + float *a = random_matrix(m,k); + float *b = random_matrix(k,n); + + int lda = (!TA)?k:m; + int ldb = (!TB)?n:k; + + float *c = random_matrix(m,n); + + float *a_cl = cuda_make_array(a, m*k); + float *b_cl = cuda_make_array(b, k*n); + float *c_cl = cuda_make_array(c, m*n); + + int i; + clock_t start = clock(), end; + for(i = 0; i +#include +#include +#include + +static void increment_layer(layer *l, int steps) +{ + int num = l->outputs*l->batch*steps; + l->output += num; + l->delta += num; + l->x += num; + l->x_norm += num; + +#ifdef GPU + l->output_gpu += num; + l->delta_gpu += num; + l->x_gpu += num; + l->x_norm_gpu += num; +#endif +} + +layer make_gru_layer(int batch, int inputs, int outputs, int steps, int batch_normalize, int adam) +{ + fprintf(stderr, "GRU Layer: %d inputs, %d outputs\n", inputs, outputs); + batch = batch / steps; + layer l = {0}; + l.batch = batch; + l.type = GRU; + l.steps = steps; + l.inputs = inputs; + + l.uz = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.uz) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.uz->batch = batch; + + l.wz = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wz) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wz->batch = batch; + + l.ur = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.ur) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.ur->batch = batch; + + l.wr = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wr) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wr->batch = batch; + + + + l.uh = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.uh) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.uh->batch = batch; + + l.wh = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wh) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wh->batch = batch; + + l.batch_normalize = batch_normalize; + + + l.outputs = outputs; + l.output = calloc(outputs*batch*steps, sizeof(float)); + l.delta = calloc(outputs*batch*steps, sizeof(float)); + l.state = calloc(outputs*batch, sizeof(float)); + l.prev_state = calloc(outputs*batch, sizeof(float)); + l.forgot_state = calloc(outputs*batch, sizeof(float)); + l.forgot_delta = calloc(outputs*batch, sizeof(float)); + + l.r_cpu = calloc(outputs*batch, sizeof(float)); + l.z_cpu = calloc(outputs*batch, sizeof(float)); + l.h_cpu = calloc(outputs*batch, sizeof(float)); + + l.forward = forward_gru_layer; + l.backward = backward_gru_layer; + l.update = update_gru_layer; + +#ifdef GPU + l.forward_gpu = forward_gru_layer_gpu; + l.backward_gpu = backward_gru_layer_gpu; + l.update_gpu = update_gru_layer_gpu; + + l.forgot_state_gpu = cuda_make_array(0, batch*outputs); + l.forgot_delta_gpu = cuda_make_array(0, batch*outputs); + l.prev_state_gpu = cuda_make_array(0, batch*outputs); + l.state_gpu = cuda_make_array(0, batch*outputs); + l.output_gpu = cuda_make_array(0, batch*outputs*steps); + l.delta_gpu = cuda_make_array(0, batch*outputs*steps); + l.r_gpu = cuda_make_array(0, batch*outputs); + l.z_gpu = cuda_make_array(0, batch*outputs); + l.h_gpu = cuda_make_array(0, batch*outputs); + +#ifdef CUDNN + cudnnSetTensor4dDescriptor(l.uz->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.uz->out_c, l.uz->out_h, l.uz->out_w); + cudnnSetTensor4dDescriptor(l.uh->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.uh->out_c, l.uh->out_h, l.uh->out_w); + cudnnSetTensor4dDescriptor(l.ur->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.ur->out_c, l.ur->out_h, l.ur->out_w); + cudnnSetTensor4dDescriptor(l.wz->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wz->out_c, l.wz->out_h, l.wz->out_w); + cudnnSetTensor4dDescriptor(l.wh->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wh->out_c, l.wh->out_h, l.wh->out_w); + cudnnSetTensor4dDescriptor(l.wr->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wr->out_c, l.wr->out_h, l.wr->out_w); +#endif +#endif + + return l; +} + +void update_gru_layer(layer l, update_args a) +{ + update_connected_layer(*(l.ur), a); + update_connected_layer(*(l.uz), a); + update_connected_layer(*(l.uh), a); + update_connected_layer(*(l.wr), a); + update_connected_layer(*(l.wz), a); + update_connected_layer(*(l.wh), a); +} + +void forward_gru_layer(layer l, network net) +{ + network s = net; + s.train = net.train; + int i; + layer uz = *(l.uz); + layer ur = *(l.ur); + layer uh = *(l.uh); + + layer wz = *(l.wz); + layer wr = *(l.wr); + layer wh = *(l.wh); + + fill_cpu(l.outputs * l.batch * l.steps, 0, uz.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, ur.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, uh.delta, 1); + + fill_cpu(l.outputs * l.batch * l.steps, 0, wz.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, wr.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, wh.delta, 1); + if(net.train) { + fill_cpu(l.outputs * l.batch * l.steps, 0, l.delta, 1); + copy_cpu(l.outputs*l.batch, l.state, 1, l.prev_state, 1); + } + + for (i = 0; i < l.steps; ++i) { + s.input = l.state; + forward_connected_layer(wz, s); + forward_connected_layer(wr, s); + + s.input = net.input; + forward_connected_layer(uz, s); + forward_connected_layer(ur, s); + forward_connected_layer(uh, s); + + + copy_cpu(l.outputs*l.batch, uz.output, 1, l.z_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, wz.output, 1, l.z_cpu, 1); + + copy_cpu(l.outputs*l.batch, ur.output, 1, l.r_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, wr.output, 1, l.r_cpu, 1); + + activate_array(l.z_cpu, l.outputs*l.batch, LOGISTIC); + activate_array(l.r_cpu, l.outputs*l.batch, LOGISTIC); + + copy_cpu(l.outputs*l.batch, l.state, 1, l.forgot_state, 1); + mul_cpu(l.outputs*l.batch, l.r_cpu, 1, l.forgot_state, 1); + + s.input = l.forgot_state; + forward_connected_layer(wh, s); + + copy_cpu(l.outputs*l.batch, uh.output, 1, l.h_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, wh.output, 1, l.h_cpu, 1); + + if(l.tanh){ + activate_array(l.h_cpu, l.outputs*l.batch, TANH); + } else { + activate_array(l.h_cpu, l.outputs*l.batch, LOGISTIC); + } + + weighted_sum_cpu(l.state, l.h_cpu, l.z_cpu, l.outputs*l.batch, l.output); + + copy_cpu(l.outputs*l.batch, l.output, 1, l.state, 1); + + net.input += l.inputs*l.batch; + l.output += l.outputs*l.batch; + increment_layer(&uz, 1); + increment_layer(&ur, 1); + increment_layer(&uh, 1); + + increment_layer(&wz, 1); + increment_layer(&wr, 1); + increment_layer(&wh, 1); + } +} + +void backward_gru_layer(layer l, network net) +{ +} + +#ifdef GPU + +void pull_gru_layer(layer l) +{ +} + +void push_gru_layer(layer l) +{ +} + +void update_gru_layer_gpu(layer l, update_args a) +{ + update_connected_layer_gpu(*(l.ur), a); + update_connected_layer_gpu(*(l.uz), a); + update_connected_layer_gpu(*(l.uh), a); + update_connected_layer_gpu(*(l.wr), a); + update_connected_layer_gpu(*(l.wz), a); + update_connected_layer_gpu(*(l.wh), a); +} + +void forward_gru_layer_gpu(layer l, network net) +{ + network s = {0}; + s.train = net.train; + int i; + layer uz = *(l.uz); + layer ur = *(l.ur); + layer uh = *(l.uh); + + layer wz = *(l.wz); + layer wr = *(l.wr); + layer wh = *(l.wh); + + fill_gpu(l.outputs * l.batch * l.steps, 0, uz.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, ur.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, uh.delta_gpu, 1); + + fill_gpu(l.outputs * l.batch * l.steps, 0, wz.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, wr.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, wh.delta_gpu, 1); + if(net.train) { + fill_gpu(l.outputs * l.batch * l.steps, 0, l.delta_gpu, 1); + copy_gpu(l.outputs*l.batch, l.state_gpu, 1, l.prev_state_gpu, 1); + } + + for (i = 0; i < l.steps; ++i) { + s.input_gpu = l.state_gpu; + forward_connected_layer_gpu(wz, s); + forward_connected_layer_gpu(wr, s); + + s.input_gpu = net.input_gpu; + forward_connected_layer_gpu(uz, s); + forward_connected_layer_gpu(ur, s); + forward_connected_layer_gpu(uh, s); + + copy_gpu(l.outputs*l.batch, uz.output_gpu, 1, l.z_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, wz.output_gpu, 1, l.z_gpu, 1); + + copy_gpu(l.outputs*l.batch, ur.output_gpu, 1, l.r_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, wr.output_gpu, 1, l.r_gpu, 1); + + activate_array_gpu(l.z_gpu, l.outputs*l.batch, LOGISTIC); + activate_array_gpu(l.r_gpu, l.outputs*l.batch, LOGISTIC); + + copy_gpu(l.outputs*l.batch, l.state_gpu, 1, l.forgot_state_gpu, 1); + mul_gpu(l.outputs*l.batch, l.r_gpu, 1, l.forgot_state_gpu, 1); + + s.input_gpu = l.forgot_state_gpu; + forward_connected_layer_gpu(wh, s); + + copy_gpu(l.outputs*l.batch, uh.output_gpu, 1, l.h_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, wh.output_gpu, 1, l.h_gpu, 1); + + if(l.tanh){ + activate_array_gpu(l.h_gpu, l.outputs*l.batch, TANH); + } else { + activate_array_gpu(l.h_gpu, l.outputs*l.batch, LOGISTIC); + } + + weighted_sum_gpu(l.state_gpu, l.h_gpu, l.z_gpu, l.outputs*l.batch, l.output_gpu); + copy_gpu(l.outputs*l.batch, l.output_gpu, 1, l.state_gpu, 1); + + net.input_gpu += l.inputs*l.batch; + l.output_gpu += l.outputs*l.batch; + increment_layer(&uz, 1); + increment_layer(&ur, 1); + increment_layer(&uh, 1); + + increment_layer(&wz, 1); + increment_layer(&wr, 1); + increment_layer(&wh, 1); + } +} + +void backward_gru_layer_gpu(layer l, network net) +{ + network s = {0}; + s.train = net.train; + int i; + layer uz = *(l.uz); + layer ur = *(l.ur); + layer uh = *(l.uh); + + layer wz = *(l.wz); + layer wr = *(l.wr); + layer wh = *(l.wh); + + increment_layer(&uz, l.steps - 1); + increment_layer(&ur, l.steps - 1); + increment_layer(&uh, l.steps - 1); + + increment_layer(&wz, l.steps - 1); + increment_layer(&wr, l.steps - 1); + increment_layer(&wh, l.steps - 1); + + net.input_gpu += l.inputs*l.batch*(l.steps-1); + if(net.delta_gpu) net.delta_gpu += l.inputs*l.batch*(l.steps-1); + l.output_gpu += l.outputs*l.batch*(l.steps-1); + l.delta_gpu += l.outputs*l.batch*(l.steps-1); + float *end_state = l.output_gpu; + for (i = l.steps-1; i >= 0; --i) { + if(i != 0) copy_gpu(l.outputs*l.batch, l.output_gpu - l.outputs*l.batch, 1, l.state_gpu, 1); + else copy_gpu(l.outputs*l.batch, l.prev_state_gpu, 1, l.state_gpu, 1); + float *prev_delta_gpu = (i == 0) ? 0 : l.delta_gpu - l.outputs*l.batch; + + copy_gpu(l.outputs*l.batch, uz.output_gpu, 1, l.z_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, wz.output_gpu, 1, l.z_gpu, 1); + + copy_gpu(l.outputs*l.batch, ur.output_gpu, 1, l.r_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, wr.output_gpu, 1, l.r_gpu, 1); + + activate_array_gpu(l.z_gpu, l.outputs*l.batch, LOGISTIC); + activate_array_gpu(l.r_gpu, l.outputs*l.batch, LOGISTIC); + + copy_gpu(l.outputs*l.batch, uh.output_gpu, 1, l.h_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, wh.output_gpu, 1, l.h_gpu, 1); + + if(l.tanh){ + activate_array_gpu(l.h_gpu, l.outputs*l.batch, TANH); + } else { + activate_array_gpu(l.h_gpu, l.outputs*l.batch, LOGISTIC); + } + + weighted_delta_gpu(l.state_gpu, l.h_gpu, l.z_gpu, prev_delta_gpu, uh.delta_gpu, uz.delta_gpu, l.outputs*l.batch, l.delta_gpu); + + if(l.tanh){ + gradient_array_gpu(l.h_gpu, l.outputs*l.batch, TANH, uh.delta_gpu); + } else { + gradient_array_gpu(l.h_gpu, l.outputs*l.batch, LOGISTIC, uh.delta_gpu); + } + + copy_gpu(l.outputs*l.batch, uh.delta_gpu, 1, wh.delta_gpu, 1); + + copy_gpu(l.outputs*l.batch, l.state_gpu, 1, l.forgot_state_gpu, 1); + mul_gpu(l.outputs*l.batch, l.r_gpu, 1, l.forgot_state_gpu, 1); + fill_gpu(l.outputs*l.batch, 0, l.forgot_delta_gpu, 1); + + s.input_gpu = l.forgot_state_gpu; + s.delta_gpu = l.forgot_delta_gpu; + + backward_connected_layer_gpu(wh, s); + if(prev_delta_gpu) mult_add_into_gpu(l.outputs*l.batch, l.forgot_delta_gpu, l.r_gpu, prev_delta_gpu); + mult_add_into_gpu(l.outputs*l.batch, l.forgot_delta_gpu, l.state_gpu, ur.delta_gpu); + + gradient_array_gpu(l.r_gpu, l.outputs*l.batch, LOGISTIC, ur.delta_gpu); + copy_gpu(l.outputs*l.batch, ur.delta_gpu, 1, wr.delta_gpu, 1); + + gradient_array_gpu(l.z_gpu, l.outputs*l.batch, LOGISTIC, uz.delta_gpu); + copy_gpu(l.outputs*l.batch, uz.delta_gpu, 1, wz.delta_gpu, 1); + + s.input_gpu = l.state_gpu; + s.delta_gpu = prev_delta_gpu; + + backward_connected_layer_gpu(wr, s); + backward_connected_layer_gpu(wz, s); + + s.input_gpu = net.input_gpu; + s.delta_gpu = net.delta_gpu; + + backward_connected_layer_gpu(uh, s); + backward_connected_layer_gpu(ur, s); + backward_connected_layer_gpu(uz, s); + + + net.input_gpu -= l.inputs*l.batch; + if(net.delta_gpu) net.delta_gpu -= l.inputs*l.batch; + l.output_gpu -= l.outputs*l.batch; + l.delta_gpu -= l.outputs*l.batch; + increment_layer(&uz, -1); + increment_layer(&ur, -1); + increment_layer(&uh, -1); + + increment_layer(&wz, -1); + increment_layer(&wr, -1); + increment_layer(&wh, -1); + } + copy_gpu(l.outputs*l.batch, end_state, 1, l.state_gpu, 1); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/gru_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/gru_layer.h" new file mode 100644 index 00000000..9067942e --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/gru_layer.h" @@ -0,0 +1,24 @@ + +#ifndef GRU_LAYER_H +#define GRU_LAYER_H + +#include "activations.h" +#include "layer.h" +#include "network.h" + +layer make_gru_layer(int batch, int inputs, int outputs, int steps, int batch_normalize, int adam); + +void forward_gru_layer(layer l, network state); +void backward_gru_layer(layer l, network state); +void update_gru_layer(layer l, update_args a); + +#ifdef GPU +void forward_gru_layer_gpu(layer l, network state); +void backward_gru_layer_gpu(layer l, network state); +void update_gru_layer_gpu(layer l, update_args a); +void push_gru_layer(layer l); +void pull_gru_layer(layer l); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col.c" new file mode 100644 index 00000000..69ec98a9 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col.c" @@ -0,0 +1,40 @@ +#include "im2col.h" +#include +float im2col_get_pixel(float *im, int height, int width, int channels, + int row, int col, int channel, int pad) +{ + row -= pad; + col -= pad; + + if (row < 0 || col < 0 || + row >= height || col >= width) return 0; + return im[col + width*(row + height*channel)]; +} + +//From Berkeley Vision's Caffe! +//https://github.com/BVLC/caffe/blob/master/LICENSE +void im2col_cpu(float* data_im, + int channels, int height, int width, + int ksize, int stride, int pad, float* data_col) +{ + int c,h,w; + int height_col = (height + 2*pad - ksize) / stride + 1; + int width_col = (width + 2*pad - ksize) / stride + 1; + + int channels_col = channels * ksize * ksize; + for (c = 0; c < channels_col; ++c) { + int w_offset = c % ksize; + int h_offset = (c / ksize) % ksize; + int c_im = c / ksize / ksize; + for (h = 0; h < height_col; ++h) { + for (w = 0; w < width_col; ++w) { + int im_row = h_offset + h * stride; + int im_col = w_offset + w * stride; + int col_index = (c * height_col + h) * width_col + w; + data_col[col_index] = im2col_get_pixel(data_im, height, width, channels, + im_row, im_col, c_im, pad); + } + } + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col.h" new file mode 100644 index 00000000..02c4247f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col.h" @@ -0,0 +1,15 @@ +#ifndef IM2COL_H +#define IM2COL_H + +void im2col_cpu(float* data_im, + int channels, int height, int width, + int ksize, int stride, int pad, float* data_col); + +#ifdef GPU + +void im2col_gpu(float *im, + int channels, int height, int width, + int ksize, int stride, int pad,float *data_col); + +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col_kernels.cu" new file mode 100644 index 00000000..07b5e679 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/im2col_kernels.cu" @@ -0,0 +1,61 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "im2col.h" +#include "cuda.h" +} + +// src: https://github.com/BVLC/caffe/blob/master/src/caffe/util/im2col.cu +// You may also want to read: https://github.com/BVLC/caffe/blob/master/LICENSE + +__global__ void im2col_gpu_kernel(const int n, const float* data_im, + const int height, const int width, const int ksize, + const int pad, + const int stride, + const int height_col, const int width_col, + float *data_col) { + int index = blockIdx.x*blockDim.x+threadIdx.x; + for(; index < n; index += blockDim.x*gridDim.x){ + int w_out = index % width_col; + int h_index = index / width_col; + int h_out = h_index % height_col; + int channel_in = h_index / height_col; + int channel_out = channel_in * ksize * ksize; + int h_in = h_out * stride - pad; + int w_in = w_out * stride - pad; + float* data_col_ptr = data_col; + data_col_ptr += (channel_out * height_col + h_out) * width_col + w_out; + const float* data_im_ptr = data_im; + data_im_ptr += (channel_in * height + h_in) * width + w_in; + for (int i = 0; i < ksize; ++i) { + for (int j = 0; j < ksize; ++j) { + int h = h_in + i; + int w = w_in + j; + + *data_col_ptr = (h >= 0 && w >= 0 && h < height && w < width) ? + data_im_ptr[i * width + j] : 0; + + //*data_col_ptr = data_im_ptr[ii * width + jj]; + + data_col_ptr += height_col * width_col; + } + } + } +} + +void im2col_gpu(float *im, + int channels, int height, int width, + int ksize, int stride, int pad, float *data_col){ + // We are going to launch channels * height_col * width_col kernels, each + // kernel responsible for copying a single-channel grid. + int height_col = (height + 2 * pad - ksize) / stride + 1; + int width_col = (width + 2 * pad - ksize) / stride + 1; + int num_kernels = channels * height_col * width_col; + im2col_gpu_kernel<<<(num_kernels+BLOCK-1)/BLOCK, + BLOCK>>>( + num_kernels, im, height, width, ksize, pad, + stride, height_col, + width_col, data_col); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image.c" new file mode 100644 index 00000000..4a2c6baf --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image.c" @@ -0,0 +1,1466 @@ +#include "image.h" +#include "utils.h" +#include "blas.h" +#include "cuda.h" +#include +#include + +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" +#define STB_IMAGE_WRITE_IMPLEMENTATION +#include "stb_image_write.h" + +int windows = 0; + +float colors[6][3] = { {1,0,1}, {0,0,1},{0,1,1},{0,1,0},{1,1,0},{1,0,0} }; + +float get_color(int c, int x, int max) +{ + float ratio = ((float)x/max)*5; + int i = floor(ratio); + int j = ceil(ratio); + ratio -= i; + float r = (1-ratio) * colors[i][c] + ratio*colors[j][c]; + //printf("%f\n", r); + return r; +} + +image mask_to_rgb(image mask) +{ + int n = mask.c; + image im = make_image(mask.w, mask.h, 3); + int i, j; + for(j = 0; j < n; ++j){ + int offset = j*123457 % n; + float red = get_color(2,offset,n); + float green = get_color(1,offset,n); + float blue = get_color(0,offset,n); + for(i = 0; i < im.w*im.h; ++i){ + im.data[i + 0*im.w*im.h] += mask.data[j*im.h*im.w + i]*red; + im.data[i + 1*im.w*im.h] += mask.data[j*im.h*im.w + i]*green; + im.data[i + 2*im.w*im.h] += mask.data[j*im.h*im.w + i]*blue; + } + } + return im; +} + +static float get_pixel(image m, int x, int y, int c) +{ + assert(x < m.w && y < m.h && c < m.c); + return m.data[c*m.h*m.w + y*m.w + x]; +} +static float get_pixel_extend(image m, int x, int y, int c) +{ + if(x < 0 || x >= m.w || y < 0 || y >= m.h) return 0; + /* + if(x < 0) x = 0; + if(x >= m.w) x = m.w-1; + if(y < 0) y = 0; + if(y >= m.h) y = m.h-1; + */ + if(c < 0 || c >= m.c) return 0; + return get_pixel(m, x, y, c); +} +static void set_pixel(image m, int x, int y, int c, float val) +{ + if (x < 0 || y < 0 || c < 0 || x >= m.w || y >= m.h || c >= m.c) return; + assert(x < m.w && y < m.h && c < m.c); + m.data[c*m.h*m.w + y*m.w + x] = val; +} +static void add_pixel(image m, int x, int y, int c, float val) +{ + assert(x < m.w && y < m.h && c < m.c); + m.data[c*m.h*m.w + y*m.w + x] += val; +} + +static float bilinear_interpolate(image im, float x, float y, int c) +{ + int ix = (int) floorf(x); + int iy = (int) floorf(y); + + float dx = x - ix; + float dy = y - iy; + + float val = (1-dy) * (1-dx) * get_pixel_extend(im, ix, iy, c) + + dy * (1-dx) * get_pixel_extend(im, ix, iy+1, c) + + (1-dy) * dx * get_pixel_extend(im, ix+1, iy, c) + + dy * dx * get_pixel_extend(im, ix+1, iy+1, c); + return val; +} + + +void composite_image(image source, image dest, int dx, int dy) +{ + int x,y,k; + for(k = 0; k < source.c; ++k){ + for(y = 0; y < source.h; ++y){ + for(x = 0; x < source.w; ++x){ + float val = get_pixel(source, x, y, k); + float val2 = get_pixel_extend(dest, dx+x, dy+y, k); + set_pixel(dest, dx+x, dy+y, k, val * val2); + } + } + } +} + +image border_image(image a, int border) +{ + image b = make_image(a.w + 2*border, a.h + 2*border, a.c); + int x,y,k; + for(k = 0; k < b.c; ++k){ + for(y = 0; y < b.h; ++y){ + for(x = 0; x < b.w; ++x){ + float val = get_pixel_extend(a, x - border, y - border, k); + if(x - border < 0 || x - border >= a.w || y - border < 0 || y - border >= a.h) val = 1; + set_pixel(b, x, y, k, val); + } + } + } + return b; +} + +image tile_images(image a, image b, int dx) +{ + if(a.w == 0) return copy_image(b); + image c = make_image(a.w + b.w + dx, (a.h > b.h) ? a.h : b.h, (a.c > b.c) ? a.c : b.c); + fill_cpu(c.w*c.h*c.c, 1, c.data, 1); + embed_image(a, c, 0, 0); + composite_image(b, c, a.w + dx, 0); + return c; +} + +image get_label(image **characters, char *string, int size) +{ + size = size/10; + if(size > 7) size = 7; + image label = make_empty_image(0,0,0); + while(*string){ + image l = characters[size][(int)*string]; + image n = tile_images(label, l, -size - 1 + (size+1)/2); + free_image(label); + label = n; + ++string; + } + image b = border_image(label, label.h*.25); + free_image(label); + return b; +} + +void draw_label(image a, int r, int c, image label, const float *rgb) +{ + int w = label.w; + int h = label.h; + if (r - h >= 0) r = r - h; + + int i, j, k; + for(j = 0; j < h && j + r < a.h; ++j){ + for(i = 0; i < w && i + c < a.w; ++i){ + for(k = 0; k < label.c; ++k){ + float val = get_pixel(label, i, j, k); + set_pixel(a, i+c, j+r, k, rgb[k] * val); + } + } + } +} + +void draw_box(image a, int x1, int y1, int x2, int y2, float r, float g, float b) +{ + //normalize_image(a); + int i; + if(x1 < 0) x1 = 0; + if(x1 >= a.w) x1 = a.w-1; + if(x2 < 0) x2 = 0; + if(x2 >= a.w) x2 = a.w-1; + + if(y1 < 0) y1 = 0; + if(y1 >= a.h) y1 = a.h-1; + if(y2 < 0) y2 = 0; + if(y2 >= a.h) y2 = a.h-1; + + for(i = x1; i <= x2; ++i){ + a.data[i + y1*a.w + 0*a.w*a.h] = r; + a.data[i + y2*a.w + 0*a.w*a.h] = r; + + a.data[i + y1*a.w + 1*a.w*a.h] = g; + a.data[i + y2*a.w + 1*a.w*a.h] = g; + + a.data[i + y1*a.w + 2*a.w*a.h] = b; + a.data[i + y2*a.w + 2*a.w*a.h] = b; + } + for(i = y1; i <= y2; ++i){ + a.data[x1 + i*a.w + 0*a.w*a.h] = r; + a.data[x2 + i*a.w + 0*a.w*a.h] = r; + + a.data[x1 + i*a.w + 1*a.w*a.h] = g; + a.data[x2 + i*a.w + 1*a.w*a.h] = g; + + a.data[x1 + i*a.w + 2*a.w*a.h] = b; + a.data[x2 + i*a.w + 2*a.w*a.h] = b; + } +} + +void draw_box_width(image a, int x1, int y1, int x2, int y2, int w, float r, float g, float b) +{ + int i; + for(i = 0; i < w; ++i){ + draw_box(a, x1+i, y1+i, x2-i, y2-i, r, g, b); + } +} + +void draw_bbox(image a, box bbox, int w, float r, float g, float b) +{ + int left = (bbox.x-bbox.w/2)*a.w; + int right = (bbox.x+bbox.w/2)*a.w; + int top = (bbox.y-bbox.h/2)*a.h; + int bot = (bbox.y+bbox.h/2)*a.h; + + int i; + for(i = 0; i < w; ++i){ + draw_box(a, left+i, top+i, right-i, bot-i, r, g, b); + } +} + +image **load_alphabet() +{ + int i, j; + const int nsize = 8; + image **alphabets = calloc(nsize, sizeof(image)); + for(j = 0; j < nsize; ++j){ + alphabets[j] = calloc(128, sizeof(image)); + for(i = 32; i < 127; ++i){ + char buff[256]; + sprintf(buff, "data/labels/%d_%d.png", i, j); + alphabets[j][i] = load_image_color(buff, 0, 0); + } + } + return alphabets; +} + +void draw_detections(image im, detection *dets, int num, float thresh, char **names, image **alphabet, int classes) +{ + int i,j; + + for(i = 0; i < num; ++i){ + char labelstr[4096] = {0}; + int class = -1; + for(j = 0; j < classes; ++j){ + if (dets[i].prob[j] > thresh){ + if (class < 0) { + strcat(labelstr, names[j]); + class = j; + } else { + strcat(labelstr, ", "); + strcat(labelstr, names[j]); + } + printf("%s: %.0f%%\n", names[j], dets[i].prob[j]*100); + } + } + if(class >= 0){ + int width = im.h * .006; + + /* + if(0){ + width = pow(prob, 1./2.)*10+1; + alphabet = 0; + } + */ + + //printf("%d %s: %.0f%%\n", i, names[class], prob*100); + int offset = class*123457 % classes; + float red = get_color(2,offset,classes); + float green = get_color(1,offset,classes); + float blue = get_color(0,offset,classes); + float rgb[3]; + + //width = prob*20+2; + + rgb[0] = red; + rgb[1] = green; + rgb[2] = blue; + box b = dets[i].bbox; + //printf("%f %f %f %f\n", b.x, b.y, b.w, b.h); + + int left = (b.x-b.w/2.)*im.w; + int right = (b.x+b.w/2.)*im.w; + int top = (b.y-b.h/2.)*im.h; + int bot = (b.y+b.h/2.)*im.h; + + if(left < 0) left = 0; + if(right > im.w-1) right = im.w-1; + if(top < 0) top = 0; + if(bot > im.h-1) bot = im.h-1; + + draw_box_width(im, left, top, right, bot, width, red, green, blue); + if (alphabet) { + image label = get_label(alphabet, labelstr, (im.h*.03)); + draw_label(im, top + width, left, label, rgb); + free_image(label); + } + if (dets[i].mask){ + image mask = float_to_image(14, 14, 1, dets[i].mask); + image resized_mask = resize_image(mask, b.w*im.w, b.h*im.h); + image tmask = threshold_image(resized_mask, .5); + embed_image(tmask, im, left, top); + free_image(mask); + free_image(resized_mask); + free_image(tmask); + } + } + } +} + +void transpose_image(image im) +{ + assert(im.w == im.h); + int n, m; + int c; + for(c = 0; c < im.c; ++c){ + for(n = 0; n < im.w-1; ++n){ + for(m = n + 1; m < im.w; ++m){ + float swap = im.data[m + im.w*(n + im.h*c)]; + im.data[m + im.w*(n + im.h*c)] = im.data[n + im.w*(m + im.h*c)]; + im.data[n + im.w*(m + im.h*c)] = swap; + } + } + } +} + +void rotate_image_cw(image im, int times) +{ + assert(im.w == im.h); + times = (times + 400) % 4; + int i, x, y, c; + int n = im.w; + for(i = 0; i < times; ++i){ + for(c = 0; c < im.c; ++c){ + for(x = 0; x < n/2; ++x){ + for(y = 0; y < (n-1)/2 + 1; ++y){ + float temp = im.data[y + im.w*(x + im.h*c)]; + im.data[y + im.w*(x + im.h*c)] = im.data[n-1-x + im.w*(y + im.h*c)]; + im.data[n-1-x + im.w*(y + im.h*c)] = im.data[n-1-y + im.w*(n-1-x + im.h*c)]; + im.data[n-1-y + im.w*(n-1-x + im.h*c)] = im.data[x + im.w*(n-1-y + im.h*c)]; + im.data[x + im.w*(n-1-y + im.h*c)] = temp; + } + } + } + } +} + +void flip_image(image a) +{ + int i,j,k; + for(k = 0; k < a.c; ++k){ + for(i = 0; i < a.h; ++i){ + for(j = 0; j < a.w/2; ++j){ + int index = j + a.w*(i + a.h*(k)); + int flip = (a.w - j - 1) + a.w*(i + a.h*(k)); + float swap = a.data[flip]; + a.data[flip] = a.data[index]; + a.data[index] = swap; + } + } + } +} + +image image_distance(image a, image b) +{ + int i,j; + image dist = make_image(a.w, a.h, 1); + for(i = 0; i < a.c; ++i){ + for(j = 0; j < a.h*a.w; ++j){ + dist.data[j] += pow(a.data[i*a.h*a.w+j]-b.data[i*a.h*a.w+j],2); + } + } + for(j = 0; j < a.h*a.w; ++j){ + dist.data[j] = sqrt(dist.data[j]); + } + return dist; +} + +void ghost_image(image source, image dest, int dx, int dy) +{ + int x,y,k; + float max_dist = sqrt((-source.w/2. + .5)*(-source.w/2. + .5)); + for(k = 0; k < source.c; ++k){ + for(y = 0; y < source.h; ++y){ + for(x = 0; x < source.w; ++x){ + float dist = sqrt((x - source.w/2. + .5)*(x - source.w/2. + .5) + (y - source.h/2. + .5)*(y - source.h/2. + .5)); + float alpha = (1 - dist/max_dist); + if(alpha < 0) alpha = 0; + float v1 = get_pixel(source, x,y,k); + float v2 = get_pixel(dest, dx+x,dy+y,k); + float val = alpha*v1 + (1-alpha)*v2; + set_pixel(dest, dx+x, dy+y, k, val); + } + } + } +} + +void blocky_image(image im, int s) +{ + int i,j,k; + for(k = 0; k < im.c; ++k){ + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + im.data[i + im.w*(j + im.h*k)] = im.data[i/s*s + im.w*(j/s*s + im.h*k)]; + } + } + } +} + +void censor_image(image im, int dx, int dy, int w, int h) +{ + int i,j,k; + int s = 32; + if(dx < 0) dx = 0; + if(dy < 0) dy = 0; + + for(k = 0; k < im.c; ++k){ + for(j = dy; j < dy + h && j < im.h; ++j){ + for(i = dx; i < dx + w && i < im.w; ++i){ + im.data[i + im.w*(j + im.h*k)] = im.data[i/s*s + im.w*(j/s*s + im.h*k)]; + //im.data[i + j*im.w + k*im.w*im.h] = 0; + } + } + } +} + +void embed_image(image source, image dest, int dx, int dy) +{ + int x,y,k; + for(k = 0; k < source.c; ++k){ + for(y = 0; y < source.h; ++y){ + for(x = 0; x < source.w; ++x){ + float val = get_pixel(source, x,y,k); + set_pixel(dest, dx+x, dy+y, k, val); + } + } + } +} + +image collapse_image_layers(image source, int border) +{ + int h = source.h; + h = (h+border)*source.c - border; + image dest = make_image(source.w, h, 1); + int i; + for(i = 0; i < source.c; ++i){ + image layer = get_image_layer(source, i); + int h_offset = i*(source.h+border); + embed_image(layer, dest, 0, h_offset); + free_image(layer); + } + return dest; +} + +void constrain_image(image im) +{ + int i; + for(i = 0; i < im.w*im.h*im.c; ++i){ + if(im.data[i] < 0) im.data[i] = 0; + if(im.data[i] > 1) im.data[i] = 1; + } +} + +void normalize_image(image p) +{ + int i; + float min = 9999999; + float max = -999999; + + for(i = 0; i < p.h*p.w*p.c; ++i){ + float v = p.data[i]; + if(v < min) min = v; + if(v > max) max = v; + } + if(max - min < .000000001){ + min = 0; + max = 1; + } + for(i = 0; i < p.c*p.w*p.h; ++i){ + p.data[i] = (p.data[i] - min)/(max-min); + } +} + +void normalize_image2(image p) +{ + float *min = calloc(p.c, sizeof(float)); + float *max = calloc(p.c, sizeof(float)); + int i,j; + for(i = 0; i < p.c; ++i) min[i] = max[i] = p.data[i*p.h*p.w]; + + for(j = 0; j < p.c; ++j){ + for(i = 0; i < p.h*p.w; ++i){ + float v = p.data[i+j*p.h*p.w]; + if(v < min[j]) min[j] = v; + if(v > max[j]) max[j] = v; + } + } + for(i = 0; i < p.c; ++i){ + if(max[i] - min[i] < .000000001){ + min[i] = 0; + max[i] = 1; + } + } + for(j = 0; j < p.c; ++j){ + for(i = 0; i < p.w*p.h; ++i){ + p.data[i+j*p.h*p.w] = (p.data[i+j*p.h*p.w] - min[j])/(max[j]-min[j]); + } + } + free(min); + free(max); +} + +void copy_image_into(image src, image dest) +{ + memcpy(dest.data, src.data, src.h*src.w*src.c*sizeof(float)); +} + +image copy_image(image p) +{ + image copy = p; + copy.data = calloc(p.h*p.w*p.c, sizeof(float)); + memcpy(copy.data, p.data, p.h*p.w*p.c*sizeof(float)); + return copy; +} + +void rgbgr_image(image im) +{ + int i; + for(i = 0; i < im.w*im.h; ++i){ + float swap = im.data[i]; + im.data[i] = im.data[i+im.w*im.h*2]; + im.data[i+im.w*im.h*2] = swap; + } +} + +int show_image(image p, const char *name, int ms) +{ +#ifdef OPENCV + int c = show_image_cv(p, name, ms); + return c; +#else + fprintf(stderr, "Not compiled with OpenCV, saving to %s.png instead\n", name); + save_image(p, name); + return -1; +#endif +} + +void save_image_options(image im, const char *name, IMTYPE f, int quality) +{ + char buff[256]; + //sprintf(buff, "%s (%d)", name, windows); + if(f == PNG) sprintf(buff, "%s.png", name); + else if (f == BMP) sprintf(buff, "%s.bmp", name); + else if (f == TGA) sprintf(buff, "%s.tga", name); + else if (f == JPG) sprintf(buff, "%s.jpg", name); + else sprintf(buff, "%s.png", name); + unsigned char *data = calloc(im.w*im.h*im.c, sizeof(char)); + int i,k; + for(k = 0; k < im.c; ++k){ + for(i = 0; i < im.w*im.h; ++i){ + data[i*im.c+k] = (unsigned char) (255*im.data[i + k*im.w*im.h]); + } + } + int success = 0; + if(f == PNG) success = stbi_write_png(buff, im.w, im.h, im.c, data, im.w*im.c); + else if (f == BMP) success = stbi_write_bmp(buff, im.w, im.h, im.c, data); + else if (f == TGA) success = stbi_write_tga(buff, im.w, im.h, im.c, data); + else if (f == JPG) success = stbi_write_jpg(buff, im.w, im.h, im.c, data, quality); + free(data); + if(!success) fprintf(stderr, "Failed to write image %s\n", buff); +} + +void save_image(image im, const char *name) +{ + save_image_options(im, name, JPG, 80); +} + +void show_image_layers(image p, char *name) +{ + int i; + char buff[256]; + for(i = 0; i < p.c; ++i){ + sprintf(buff, "%s - Layer %d", name, i); + image layer = get_image_layer(p, i); + show_image(layer, buff, 1); + free_image(layer); + } +} + +void show_image_collapsed(image p, char *name) +{ + image c = collapse_image_layers(p, 1); + show_image(c, name, 1); + free_image(c); +} + +image make_empty_image(int w, int h, int c) +{ + image out; + out.data = 0; + out.h = h; + out.w = w; + out.c = c; + return out; +} + +image make_image(int w, int h, int c) +{ + image out = make_empty_image(w,h,c); + out.data = calloc(h*w*c, sizeof(float)); + return out; +} + +image make_random_image(int w, int h, int c) +{ + image out = make_empty_image(w,h,c); + out.data = calloc(h*w*c, sizeof(float)); + int i; + for(i = 0; i < w*h*c; ++i){ + out.data[i] = (rand_normal() * .25) + .5; + } + return out; +} + +image float_to_image(int w, int h, int c, float *data) +{ + image out = make_empty_image(w,h,c); + out.data = data; + return out; +} + +void place_image(image im, int w, int h, int dx, int dy, image canvas) +{ + int x, y, c; + for(c = 0; c < im.c; ++c){ + for(y = 0; y < h; ++y){ + for(x = 0; x < w; ++x){ + float rx = ((float)x / w) * im.w; + float ry = ((float)y / h) * im.h; + float val = bilinear_interpolate(im, rx, ry, c); + set_pixel(canvas, x + dx, y + dy, c, val); + } + } + } +} + +image center_crop_image(image im, int w, int h) +{ + int m = (im.w < im.h) ? im.w : im.h; + image c = crop_image(im, (im.w - m) / 2, (im.h - m)/2, m, m); + image r = resize_image(c, w, h); + free_image(c); + return r; +} + +image rotate_crop_image(image im, float rad, float s, int w, int h, float dx, float dy, float aspect) +{ + int x, y, c; + float cx = im.w/2.; + float cy = im.h/2.; + image rot = make_image(w, h, im.c); + for(c = 0; c < im.c; ++c){ + for(y = 0; y < h; ++y){ + for(x = 0; x < w; ++x){ + float rx = cos(rad)*((x - w/2.)/s*aspect + dx/s*aspect) - sin(rad)*((y - h/2.)/s + dy/s) + cx; + float ry = sin(rad)*((x - w/2.)/s*aspect + dx/s*aspect) + cos(rad)*((y - h/2.)/s + dy/s) + cy; + float val = bilinear_interpolate(im, rx, ry, c); + set_pixel(rot, x, y, c, val); + } + } + } + return rot; +} + +image rotate_image(image im, float rad) +{ + int x, y, c; + float cx = im.w/2.; + float cy = im.h/2.; + image rot = make_image(im.w, im.h, im.c); + for(c = 0; c < im.c; ++c){ + for(y = 0; y < im.h; ++y){ + for(x = 0; x < im.w; ++x){ + float rx = cos(rad)*(x-cx) - sin(rad)*(y-cy) + cx; + float ry = sin(rad)*(x-cx) + cos(rad)*(y-cy) + cy; + float val = bilinear_interpolate(im, rx, ry, c); + set_pixel(rot, x, y, c, val); + } + } + } + return rot; +} + +void fill_image(image m, float s) +{ + int i; + for(i = 0; i < m.h*m.w*m.c; ++i) m.data[i] = s; +} + +void translate_image(image m, float s) +{ + int i; + for(i = 0; i < m.h*m.w*m.c; ++i) m.data[i] += s; +} + +void scale_image(image m, float s) +{ + int i; + for(i = 0; i < m.h*m.w*m.c; ++i) m.data[i] *= s; +} + +image crop_image(image im, int dx, int dy, int w, int h) +{ + image cropped = make_image(w, h, im.c); + int i, j, k; + for(k = 0; k < im.c; ++k){ + for(j = 0; j < h; ++j){ + for(i = 0; i < w; ++i){ + int r = j + dy; + int c = i + dx; + float val = 0; + r = constrain_int(r, 0, im.h-1); + c = constrain_int(c, 0, im.w-1); + val = get_pixel(im, c, r, k); + set_pixel(cropped, i, j, k, val); + } + } + } + return cropped; +} + +int best_3d_shift_r(image a, image b, int min, int max) +{ + if(min == max) return min; + int mid = floor((min + max) / 2.); + image c1 = crop_image(b, 0, mid, b.w, b.h); + image c2 = crop_image(b, 0, mid+1, b.w, b.h); + float d1 = dist_array(c1.data, a.data, a.w*a.h*a.c, 10); + float d2 = dist_array(c2.data, a.data, a.w*a.h*a.c, 10); + free_image(c1); + free_image(c2); + if(d1 < d2) return best_3d_shift_r(a, b, min, mid); + else return best_3d_shift_r(a, b, mid+1, max); +} + +int best_3d_shift(image a, image b, int min, int max) +{ + int i; + int best = 0; + float best_distance = FLT_MAX; + for(i = min; i <= max; i += 2){ + image c = crop_image(b, 0, i, b.w, b.h); + float d = dist_array(c.data, a.data, a.w*a.h*a.c, 100); + if(d < best_distance){ + best_distance = d; + best = i; + } + printf("%d %f\n", i, d); + free_image(c); + } + return best; +} + +void composite_3d(char *f1, char *f2, char *out, int delta) +{ + if(!out) out = "out"; + image a = load_image(f1, 0,0,0); + image b = load_image(f2, 0,0,0); + int shift = best_3d_shift_r(a, b, -a.h/100, a.h/100); + + image c1 = crop_image(b, 10, shift, b.w, b.h); + float d1 = dist_array(c1.data, a.data, a.w*a.h*a.c, 100); + image c2 = crop_image(b, -10, shift, b.w, b.h); + float d2 = dist_array(c2.data, a.data, a.w*a.h*a.c, 100); + + if(d2 < d1 && 0){ + image swap = a; + a = b; + b = swap; + shift = -shift; + printf("swapped, %d\n", shift); + } + else{ + printf("%d\n", shift); + } + + image c = crop_image(b, delta, shift, a.w, a.h); + int i; + for(i = 0; i < c.w*c.h; ++i){ + c.data[i] = a.data[i]; + } + save_image(c, out); +} + +void letterbox_image_into(image im, int w, int h, image boxed) +{ + int new_w = im.w; + int new_h = im.h; + if (((float)w/im.w) < ((float)h/im.h)) { + new_w = w; + new_h = (im.h * w)/im.w; + } else { + new_h = h; + new_w = (im.w * h)/im.h; + } + image resized = resize_image(im, new_w, new_h); + embed_image(resized, boxed, (w-new_w)/2, (h-new_h)/2); + free_image(resized); +} + +image letterbox_image(image im, int w, int h) +{ + int new_w = im.w; + int new_h = im.h; + if (((float)w/im.w) < ((float)h/im.h)) { + new_w = w; + new_h = (im.h * w)/im.w; + } else { + new_h = h; + new_w = (im.w * h)/im.h; + } + image resized = resize_image(im, new_w, new_h); + image boxed = make_image(w, h, im.c); + fill_image(boxed, .5); + //int i; + //for(i = 0; i < boxed.w*boxed.h*boxed.c; ++i) boxed.data[i] = 0; + embed_image(resized, boxed, (w-new_w)/2, (h-new_h)/2); + free_image(resized); + return boxed; +} + +image resize_max(image im, int max) +{ + int w = im.w; + int h = im.h; + if(w > h){ + h = (h * max) / w; + w = max; + } else { + w = (w * max) / h; + h = max; + } + if(w == im.w && h == im.h) return im; + image resized = resize_image(im, w, h); + return resized; +} + +image resize_min(image im, int min) +{ + int w = im.w; + int h = im.h; + if(w < h){ + h = (h * min) / w; + w = min; + } else { + w = (w * min) / h; + h = min; + } + if(w == im.w && h == im.h) return im; + image resized = resize_image(im, w, h); + return resized; +} + +image random_crop_image(image im, int w, int h) +{ + int dx = rand_int(0, im.w - w); + int dy = rand_int(0, im.h - h); + image crop = crop_image(im, dx, dy, w, h); + return crop; +} + +augment_args random_augment_args(image im, float angle, float aspect, int low, int high, int w, int h) +{ + augment_args a = {0}; + aspect = rand_scale(aspect); + int r = rand_int(low, high); + int min = (im.h < im.w*aspect) ? im.h : im.w*aspect; + float scale = (float)r / min; + + float rad = rand_uniform(-angle, angle) * TWO_PI / 360.; + + float dx = (im.w*scale/aspect - w) / 2.; + float dy = (im.h*scale - w) / 2.; + //if(dx < 0) dx = 0; + //if(dy < 0) dy = 0; + dx = rand_uniform(-dx, dx); + dy = rand_uniform(-dy, dy); + + a.rad = rad; + a.scale = scale; + a.w = w; + a.h = h; + a.dx = dx; + a.dy = dy; + a.aspect = aspect; + return a; +} + +image random_augment_image(image im, float angle, float aspect, int low, int high, int w, int h) +{ + augment_args a = random_augment_args(im, angle, aspect, low, high, w, h); + image crop = rotate_crop_image(im, a.rad, a.scale, a.w, a.h, a.dx, a.dy, a.aspect); + return crop; +} + +float three_way_max(float a, float b, float c) +{ + return (a > b) ? ( (a > c) ? a : c) : ( (b > c) ? b : c) ; +} + +float three_way_min(float a, float b, float c) +{ + return (a < b) ? ( (a < c) ? a : c) : ( (b < c) ? b : c) ; +} + +void yuv_to_rgb(image im) +{ + assert(im.c == 3); + int i, j; + float r, g, b; + float y, u, v; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + y = get_pixel(im, i , j, 0); + u = get_pixel(im, i , j, 1); + v = get_pixel(im, i , j, 2); + + r = y + 1.13983*v; + g = y + -.39465*u + -.58060*v; + b = y + 2.03211*u; + + set_pixel(im, i, j, 0, r); + set_pixel(im, i, j, 1, g); + set_pixel(im, i, j, 2, b); + } + } +} + +void rgb_to_yuv(image im) +{ + assert(im.c == 3); + int i, j; + float r, g, b; + float y, u, v; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + r = get_pixel(im, i , j, 0); + g = get_pixel(im, i , j, 1); + b = get_pixel(im, i , j, 2); + + y = .299*r + .587*g + .114*b; + u = -.14713*r + -.28886*g + .436*b; + v = .615*r + -.51499*g + -.10001*b; + + set_pixel(im, i, j, 0, y); + set_pixel(im, i, j, 1, u); + set_pixel(im, i, j, 2, v); + } + } +} + +// http://www.cs.rit.edu/~ncs/color/t_convert.html +void rgb_to_hsv(image im) +{ + assert(im.c == 3); + int i, j; + float r, g, b; + float h, s, v; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + r = get_pixel(im, i , j, 0); + g = get_pixel(im, i , j, 1); + b = get_pixel(im, i , j, 2); + float max = three_way_max(r,g,b); + float min = three_way_min(r,g,b); + float delta = max - min; + v = max; + if(max == 0){ + s = 0; + h = 0; + }else{ + s = delta/max; + if(r == max){ + h = (g - b) / delta; + } else if (g == max) { + h = 2 + (b - r) / delta; + } else { + h = 4 + (r - g) / delta; + } + if (h < 0) h += 6; + h = h/6.; + } + set_pixel(im, i, j, 0, h); + set_pixel(im, i, j, 1, s); + set_pixel(im, i, j, 2, v); + } + } +} + +void hsv_to_rgb(image im) +{ + assert(im.c == 3); + int i, j; + float r, g, b; + float h, s, v; + float f, p, q, t; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + h = 6 * get_pixel(im, i , j, 0); + s = get_pixel(im, i , j, 1); + v = get_pixel(im, i , j, 2); + if (s == 0) { + r = g = b = v; + } else { + int index = floor(h); + f = h - index; + p = v*(1-s); + q = v*(1-s*f); + t = v*(1-s*(1-f)); + if(index == 0){ + r = v; g = t; b = p; + } else if(index == 1){ + r = q; g = v; b = p; + } else if(index == 2){ + r = p; g = v; b = t; + } else if(index == 3){ + r = p; g = q; b = v; + } else if(index == 4){ + r = t; g = p; b = v; + } else { + r = v; g = p; b = q; + } + } + set_pixel(im, i, j, 0, r); + set_pixel(im, i, j, 1, g); + set_pixel(im, i, j, 2, b); + } + } +} + +void grayscale_image_3c(image im) +{ + assert(im.c == 3); + int i, j, k; + float scale[] = {0.299, 0.587, 0.114}; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + float val = 0; + for(k = 0; k < 3; ++k){ + val += scale[k]*get_pixel(im, i, j, k); + } + im.data[0*im.h*im.w + im.w*j + i] = val; + im.data[1*im.h*im.w + im.w*j + i] = val; + im.data[2*im.h*im.w + im.w*j + i] = val; + } + } +} + +image grayscale_image(image im) +{ + assert(im.c == 3); + int i, j, k; + image gray = make_image(im.w, im.h, 1); + float scale[] = {0.299, 0.587, 0.114}; + for(k = 0; k < im.c; ++k){ + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + gray.data[i+im.w*j] += scale[k]*get_pixel(im, i, j, k); + } + } + } + return gray; +} + +image threshold_image(image im, float thresh) +{ + int i; + image t = make_image(im.w, im.h, im.c); + for(i = 0; i < im.w*im.h*im.c; ++i){ + t.data[i] = im.data[i]>thresh ? 1 : 0; + } + return t; +} + +image blend_image(image fore, image back, float alpha) +{ + assert(fore.w == back.w && fore.h == back.h && fore.c == back.c); + image blend = make_image(fore.w, fore.h, fore.c); + int i, j, k; + for(k = 0; k < fore.c; ++k){ + for(j = 0; j < fore.h; ++j){ + for(i = 0; i < fore.w; ++i){ + float val = alpha * get_pixel(fore, i, j, k) + + (1 - alpha)* get_pixel(back, i, j, k); + set_pixel(blend, i, j, k, val); + } + } + } + return blend; +} + +void scale_image_channel(image im, int c, float v) +{ + int i, j; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + float pix = get_pixel(im, i, j, c); + pix = pix*v; + set_pixel(im, i, j, c, pix); + } + } +} + +void translate_image_channel(image im, int c, float v) +{ + int i, j; + for(j = 0; j < im.h; ++j){ + for(i = 0; i < im.w; ++i){ + float pix = get_pixel(im, i, j, c); + pix = pix+v; + set_pixel(im, i, j, c, pix); + } + } +} + +image binarize_image(image im) +{ + image c = copy_image(im); + int i; + for(i = 0; i < im.w * im.h * im.c; ++i){ + if(c.data[i] > .5) c.data[i] = 1; + else c.data[i] = 0; + } + return c; +} + +void saturate_image(image im, float sat) +{ + rgb_to_hsv(im); + scale_image_channel(im, 1, sat); + hsv_to_rgb(im); + constrain_image(im); +} + +void hue_image(image im, float hue) +{ + rgb_to_hsv(im); + int i; + for(i = 0; i < im.w*im.h; ++i){ + im.data[i] = im.data[i] + hue; + if (im.data[i] > 1) im.data[i] -= 1; + if (im.data[i] < 0) im.data[i] += 1; + } + hsv_to_rgb(im); + constrain_image(im); +} + +void exposure_image(image im, float sat) +{ + rgb_to_hsv(im); + scale_image_channel(im, 2, sat); + hsv_to_rgb(im); + constrain_image(im); +} + +void distort_image(image im, float hue, float sat, float val) +{ + rgb_to_hsv(im); + scale_image_channel(im, 1, sat); + scale_image_channel(im, 2, val); + int i; + for(i = 0; i < im.w*im.h; ++i){ + im.data[i] = im.data[i] + hue; + if (im.data[i] > 1) im.data[i] -= 1; + if (im.data[i] < 0) im.data[i] += 1; + } + hsv_to_rgb(im); + constrain_image(im); +} + +void random_distort_image(image im, float hue, float saturation, float exposure) +{ + float dhue = rand_uniform(-hue, hue); + float dsat = rand_scale(saturation); + float dexp = rand_scale(exposure); + distort_image(im, dhue, dsat, dexp); +} + +void saturate_exposure_image(image im, float sat, float exposure) +{ + rgb_to_hsv(im); + scale_image_channel(im, 1, sat); + scale_image_channel(im, 2, exposure); + hsv_to_rgb(im); + constrain_image(im); +} + +image resize_image(image im, int w, int h) +{ + image resized = make_image(w, h, im.c); + image part = make_image(w, im.h, im.c); + int r, c, k; + float w_scale = (float)(im.w - 1) / (w - 1); + float h_scale = (float)(im.h - 1) / (h - 1); + for(k = 0; k < im.c; ++k){ + for(r = 0; r < im.h; ++r){ + for(c = 0; c < w; ++c){ + float val = 0; + if(c == w-1 || im.w == 1){ + val = get_pixel(im, im.w-1, r, k); + } else { + float sx = c*w_scale; + int ix = (int) sx; + float dx = sx - ix; + val = (1 - dx) * get_pixel(im, ix, r, k) + dx * get_pixel(im, ix+1, r, k); + } + set_pixel(part, c, r, k, val); + } + } + } + for(k = 0; k < im.c; ++k){ + for(r = 0; r < h; ++r){ + float sy = r*h_scale; + int iy = (int) sy; + float dy = sy - iy; + for(c = 0; c < w; ++c){ + float val = (1-dy) * get_pixel(part, c, iy, k); + set_pixel(resized, c, r, k, val); + } + if(r == h-1 || im.h == 1) continue; + for(c = 0; c < w; ++c){ + float val = dy * get_pixel(part, c, iy+1, k); + add_pixel(resized, c, r, k, val); + } + } + } + + free_image(part); + return resized; +} + + +void test_resize(char *filename) +{ + image im = load_image(filename, 0,0, 3); + float mag = mag_array(im.data, im.w*im.h*im.c); + printf("L2 Norm: %f\n", mag); + image gray = grayscale_image(im); + + image c1 = copy_image(im); + image c2 = copy_image(im); + image c3 = copy_image(im); + image c4 = copy_image(im); + distort_image(c1, .1, 1.5, 1.5); + distort_image(c2, -.1, .66666, .66666); + distort_image(c3, .1, 1.5, .66666); + distort_image(c4, .1, .66666, 1.5); + + + show_image(im, "Original", 1); + show_image(gray, "Gray", 1); + show_image(c1, "C1", 1); + show_image(c2, "C2", 1); + show_image(c3, "C3", 1); + show_image(c4, "C4", 1); +#ifdef OPENCV + while(1){ + image aug = random_augment_image(im, 0, .75, 320, 448, 320, 320); + show_image(aug, "aug", 1); + free_image(aug); + + + float exposure = 1.15; + float saturation = 1.15; + float hue = .05; + + image c = copy_image(im); + + float dexp = rand_scale(exposure); + float dsat = rand_scale(saturation); + float dhue = rand_uniform(-hue, hue); + + distort_image(c, dhue, dsat, dexp); + show_image(c, "rand", 1); + printf("%f %f %f\n", dhue, dsat, dexp); + free_image(c); + } +#endif +} + + +image load_image_stb(char *filename, int channels) +{ + int w, h, c; + unsigned char *data = stbi_load(filename, &w, &h, &c, channels); + if (!data) { + fprintf(stderr, "Cannot load image \"%s\"\nSTB Reason: %s\n", filename, stbi_failure_reason()); + exit(0); + } + if(channels) c = channels; + int i,j,k; + image im = make_image(w, h, c); + for(k = 0; k < c; ++k){ + for(j = 0; j < h; ++j){ + for(i = 0; i < w; ++i){ + int dst_index = i + w*j + w*h*k; + int src_index = k + c*i + c*w*j; + im.data[dst_index] = (float)data[src_index]/255.; + } + } + } + free(data); + return im; +} + +image load_image(char *filename, int w, int h, int c) +{ +#ifdef OPENCV + image out = load_image_cv(filename, c); +#else + image out = load_image_stb(filename, c); +#endif + + if((h && w) && (h != out.h || w != out.w)){ + image resized = resize_image(out, w, h); + free_image(out); + out = resized; + } + return out; +} + +image load_image_color(char *filename, int w, int h) +{ + return load_image(filename, w, h, 3); +} + +image get_image_layer(image m, int l) +{ + image out = make_image(m.w, m.h, 1); + int i; + for(i = 0; i < m.h*m.w; ++i){ + out.data[i] = m.data[i+l*m.h*m.w]; + } + return out; +} +void print_image(image m) +{ + int i, j, k; + for(i =0 ; i < m.c; ++i){ + for(j =0 ; j < m.h; ++j){ + for(k = 0; k < m.w; ++k){ + printf("%.2lf, ", m.data[i*m.h*m.w + j*m.w + k]); + if(k > 30) break; + } + printf("\n"); + if(j > 30) break; + } + printf("\n"); + } + printf("\n"); +} + +image collapse_images_vert(image *ims, int n) +{ + int color = 1; + int border = 1; + int h,w,c; + w = ims[0].w; + h = (ims[0].h + border) * n - border; + c = ims[0].c; + if(c != 3 || !color){ + w = (w+border)*c - border; + c = 1; + } + + image filters = make_image(w, h, c); + int i,j; + for(i = 0; i < n; ++i){ + int h_offset = i*(ims[0].h+border); + image copy = copy_image(ims[i]); + //normalize_image(copy); + if(c == 3 && color){ + embed_image(copy, filters, 0, h_offset); + } + else{ + for(j = 0; j < copy.c; ++j){ + int w_offset = j*(ims[0].w+border); + image layer = get_image_layer(copy, j); + embed_image(layer, filters, w_offset, h_offset); + free_image(layer); + } + } + free_image(copy); + } + return filters; +} + +image collapse_images_horz(image *ims, int n) +{ + int color = 1; + int border = 1; + int h,w,c; + int size = ims[0].h; + h = size; + w = (ims[0].w + border) * n - border; + c = ims[0].c; + if(c != 3 || !color){ + h = (h+border)*c - border; + c = 1; + } + + image filters = make_image(w, h, c); + int i,j; + for(i = 0; i < n; ++i){ + int w_offset = i*(size+border); + image copy = copy_image(ims[i]); + //normalize_image(copy); + if(c == 3 && color){ + embed_image(copy, filters, w_offset, 0); + } + else{ + for(j = 0; j < copy.c; ++j){ + int h_offset = j*(size+border); + image layer = get_image_layer(copy, j); + embed_image(layer, filters, w_offset, h_offset); + free_image(layer); + } + } + free_image(copy); + } + return filters; +} + +void show_image_normalized(image im, const char *name) +{ + image c = copy_image(im); + normalize_image(c); + show_image(c, name, 1); + free_image(c); +} + +void show_images(image *ims, int n, char *window) +{ + image m = collapse_images_vert(ims, n); + /* + int w = 448; + int h = ((float)m.h/m.w) * 448; + if(h > 896){ + h = 896; + w = ((float)m.w/m.h) * 896; + } + image sized = resize_image(m, w, h); + */ + normalize_image(m); + save_image(m, window); + show_image(m, window, 1); + free_image(m); +} + +void free_image(image m) +{ + if(m.data){ + free(m.data); + } +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image.h" new file mode 100644 index 00000000..3392bb97 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image.h" @@ -0,0 +1,69 @@ +#ifndef IMAGE_H +#define IMAGE_H + +#include +#include +#include +#include +#include +#include "box.h" +#include "darknet.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENCV +void *open_video_stream(const char *f, int c, int w, int h, int fps); +image get_image_from_stream(void *p); +image load_image_cv(char *filename, int channels); +int show_image_cv(image im, const char* name, int ms); +#endif + +float get_color(int c, int x, int max); +void draw_box(image a, int x1, int y1, int x2, int y2, float r, float g, float b); +void draw_bbox(image a, box bbox, int w, float r, float g, float b); +void write_label(image a, int r, int c, image *characters, char *string, float *rgb); +image image_distance(image a, image b); +void scale_image(image m, float s); +image rotate_crop_image(image im, float rad, float s, int w, int h, float dx, float dy, float aspect); +image random_crop_image(image im, int w, int h); +image random_augment_image(image im, float angle, float aspect, int low, int high, int w, int h); +augment_args random_augment_args(image im, float angle, float aspect, int low, int high, int w, int h); +void letterbox_image_into(image im, int w, int h, image boxed); +image resize_max(image im, int max); +void translate_image(image m, float s); +void embed_image(image source, image dest, int dx, int dy); +void place_image(image im, int w, int h, int dx, int dy, image canvas); +void saturate_image(image im, float sat); +void exposure_image(image im, float sat); +void distort_image(image im, float hue, float sat, float val); +void saturate_exposure_image(image im, float sat, float exposure); +void rgb_to_hsv(image im); +void hsv_to_rgb(image im); +void yuv_to_rgb(image im); +void rgb_to_yuv(image im); + + +image collapse_image_layers(image source, int border); +image collapse_images_horz(image *ims, int n); +image collapse_images_vert(image *ims, int n); + +void show_image_normalized(image im, const char *name); +void show_images(image *ims, int n, char *window); +void show_image_layers(image p, char *name); +void show_image_collapsed(image p, char *name); + +void print_image(image m); + +image make_empty_image(int w, int h, int c); +void copy_image_into(image src, image dest); + +image get_image_layer(image m, int l); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image_opencv.cpp" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image_opencv.cpp" new file mode 100644 index 00000000..7511280b --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/image_opencv.cpp" @@ -0,0 +1,135 @@ +#ifdef OPENCV + +#include "stdio.h" +#include "stdlib.h" +#include "opencv2/opencv.hpp" +#include "image.h" + +using namespace cv; + +extern "C" { + +IplImage *image_to_ipl(image im) +{ + int x,y,c; + IplImage *disp = cvCreateImage(cvSize(im.w,im.h), IPL_DEPTH_8U, im.c); + int step = disp->widthStep; + for(y = 0; y < im.h; ++y){ + for(x = 0; x < im.w; ++x){ + for(c= 0; c < im.c; ++c){ + float val = im.data[c*im.h*im.w + y*im.w + x]; + disp->imageData[y*step + x*im.c + c] = (unsigned char)(val*255); + } + } + } + return disp; +} + +image ipl_to_image(IplImage* src) +{ + int h = src->height; + int w = src->width; + int c = src->nChannels; + image im = make_image(w, h, c); + unsigned char *data = (unsigned char *)src->imageData; + int step = src->widthStep; + int i, j, k; + + for(i = 0; i < h; ++i){ + for(k= 0; k < c; ++k){ + for(j = 0; j < w; ++j){ + im.data[k*w*h + i*w + j] = data[i*step + j*c + k]/255.; + } + } + } + return im; +} + +Mat image_to_mat(image im) +{ + image copy = copy_image(im); + constrain_image(copy); + if(im.c == 3) rgbgr_image(copy); + + IplImage *ipl = image_to_ipl(copy); + Mat m = cvarrToMat(ipl, true); + cvReleaseImage(&ipl); + free_image(copy); + return m; +} + +image mat_to_image(Mat m) +{ + IplImage ipl = m; + image im = ipl_to_image(&ipl); + rgbgr_image(im); + return im; +} + +void *open_video_stream(const char *f, int c, int w, int h, int fps) +{ + VideoCapture *cap; + if(f) cap = new VideoCapture(f); + else cap = new VideoCapture(c); + if(!cap->isOpened()) return 0; + if(w) cap->set(CV_CAP_PROP_FRAME_WIDTH, w); + if(h) cap->set(CV_CAP_PROP_FRAME_HEIGHT, w); + if(fps) cap->set(CV_CAP_PROP_FPS, w); + return (void *) cap; +} + +image get_image_from_stream(void *p) +{ + VideoCapture *cap = (VideoCapture *)p; + Mat m; + *cap >> m; + if(m.empty()) return make_empty_image(0,0,0); + return mat_to_image(m); +} + +image load_image_cv(char *filename, int channels) +{ + int flag = -1; + if (channels == 0) flag = -1; + else if (channels == 1) flag = 0; + else if (channels == 3) flag = 1; + else { + fprintf(stderr, "OpenCV can't force load with %d channels\n", channels); + } + Mat m; + m = imread(filename, flag); + if(!m.data){ + fprintf(stderr, "Cannot load image \"%s\"\n", filename); + char buff[256]; + sprintf(buff, "echo %s >> bad.list", filename); + system(buff); + return make_image(10,10,3); + //exit(0); + } + image im = mat_to_image(m); + return im; +} + +int show_image_cv(image im, const char* name, int ms) +{ + Mat m = image_to_mat(im); + imshow(name, m); + int c = waitKey(ms); + if (c != -1) c = c%256; + return c; +} + +void make_window(char *name, int w, int h, int fullscreen) +{ + namedWindow(name, WINDOW_NORMAL); + if (fullscreen) { + setWindowProperty(name, CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN); + } else { + resizeWindow(name, w, h); + if(strcmp(name, "Demo") == 0) moveWindow(name, 0, 0); + } +} + +} + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/iseg_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/iseg_layer.c" new file mode 100644 index 00000000..2bf03a8a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/iseg_layer.c" @@ -0,0 +1,225 @@ +#include "iseg_layer.h" +#include "activations.h" +#include "blas.h" +#include "box.h" +#include "cuda.h" +#include "utils.h" + +#include +#include +#include +#include + +layer make_iseg_layer(int batch, int w, int h, int classes, int ids) +{ + layer l = {0}; + l.type = ISEG; + + l.h = h; + l.w = w; + l.c = classes + ids; + l.out_w = l.w; + l.out_h = l.h; + l.out_c = l.c; + l.classes = classes; + l.batch = batch; + l.extra = ids; + l.cost = calloc(1, sizeof(float)); + l.outputs = h*w*l.c; + l.inputs = l.outputs; + l.truths = 90*(l.w*l.h+1); + l.delta = calloc(batch*l.outputs, sizeof(float)); + l.output = calloc(batch*l.outputs, sizeof(float)); + + l.counts = calloc(90, sizeof(int)); + l.sums = calloc(90, sizeof(float*)); + if(ids){ + int i; + for(i = 0; i < 90; ++i){ + l.sums[i] = calloc(ids, sizeof(float)); + } + } + + l.forward = forward_iseg_layer; + l.backward = backward_iseg_layer; +#ifdef GPU + l.forward_gpu = forward_iseg_layer_gpu; + l.backward_gpu = backward_iseg_layer_gpu; + l.output_gpu = cuda_make_array(l.output, batch*l.outputs); + l.delta_gpu = cuda_make_array(l.delta, batch*l.outputs); +#endif + + fprintf(stderr, "iseg\n"); + srand(0); + + return l; +} + +void resize_iseg_layer(layer *l, int w, int h) +{ + l->w = w; + l->h = h; + + l->outputs = h*w*l->c; + l->inputs = l->outputs; + + l->output = realloc(l->output, l->batch*l->outputs*sizeof(float)); + l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float)); + +#ifdef GPU + cuda_free(l->delta_gpu); + cuda_free(l->output_gpu); + + l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs); + l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs); +#endif +} + +void forward_iseg_layer(const layer l, network net) +{ + + double time = what_time_is_it_now(); + int i,b,j,k; + int ids = l.extra; + memcpy(l.output, net.input, l.outputs*l.batch*sizeof(float)); + memset(l.delta, 0, l.outputs * l.batch * sizeof(float)); + +#ifndef GPU + for (b = 0; b < l.batch; ++b){ + int index = b*l.outputs; + activate_array(l.output + index, l.classes*l.w*l.h, LOGISTIC); + } +#endif + + for (b = 0; b < l.batch; ++b){ + // a priori, each pixel has no class + for(i = 0; i < l.classes; ++i){ + for(k = 0; k < l.w*l.h; ++k){ + int index = b*l.outputs + i*l.w*l.h + k; + l.delta[index] = 0 - l.output[index]; + } + } + + // a priori, embedding should be small magnitude + for(i = 0; i < ids; ++i){ + for(k = 0; k < l.w*l.h; ++k){ + int index = b*l.outputs + (i+l.classes)*l.w*l.h + k; + l.delta[index] = .1 * (0 - l.output[index]); + } + } + + + memset(l.counts, 0, 90*sizeof(int)); + for(i = 0; i < 90; ++i){ + fill_cpu(ids, 0, l.sums[i], 1); + + int c = net.truth[b*l.truths + i*(l.w*l.h+1)]; + if(c < 0) break; + // add up metric embeddings for each instance + for(k = 0; k < l.w*l.h; ++k){ + int index = b*l.outputs + c*l.w*l.h + k; + float v = net.truth[b*l.truths + i*(l.w*l.h + 1) + 1 + k]; + if(v){ + l.delta[index] = v - l.output[index]; + axpy_cpu(ids, 1, l.output + b*l.outputs + l.classes*l.w*l.h + k, l.w*l.h, l.sums[i], 1); + ++l.counts[i]; + } + } + } + + float *mse = calloc(90, sizeof(float)); + for(i = 0; i < 90; ++i){ + int c = net.truth[b*l.truths + i*(l.w*l.h+1)]; + if(c < 0) break; + for(k = 0; k < l.w*l.h; ++k){ + float v = net.truth[b*l.truths + i*(l.w*l.h + 1) + 1 + k]; + if(v){ + int z; + float sum = 0; + for(z = 0; z < ids; ++z){ + int index = b*l.outputs + (l.classes + z)*l.w*l.h + k; + sum += pow(l.sums[i][z]/l.counts[i] - l.output[index], 2); + } + mse[i] += sum; + } + } + mse[i] /= l.counts[i]; + } + + // Calculate average embedding + for(i = 0; i < 90; ++i){ + if(!l.counts[i]) continue; + scal_cpu(ids, 1.f/l.counts[i], l.sums[i], 1); + if(b == 0 && net.gpu_index == 0){ + printf("%4d, %6.3f, ", l.counts[i], mse[i]); + for(j = 0; j < ids; ++j){ + printf("%6.3f,", l.sums[i][j]); + } + printf("\n"); + } + } + free(mse); + + // Calculate embedding loss + for(i = 0; i < 90; ++i){ + if(!l.counts[i]) continue; + for(k = 0; k < l.w*l.h; ++k){ + float v = net.truth[b*l.truths + i*(l.w*l.h + 1) + 1 + k]; + if(v){ + for(j = 0; j < 90; ++j){ + if(!l.counts[j])continue; + int z; + for(z = 0; z < ids; ++z){ + int index = b*l.outputs + (l.classes + z)*l.w*l.h + k; + float diff = l.sums[j][z] - l.output[index]; + if (j == i) l.delta[index] += diff < 0? -.1 : .1; + else l.delta[index] += -(diff < 0? -.1 : .1); + } + } + } + } + } + + for(i = 0; i < ids; ++i){ + for(k = 0; k < l.w*l.h; ++k){ + int index = b*l.outputs + (i+l.classes)*l.w*l.h + k; + l.delta[index] *= .01; + } + } + } + + *(l.cost) = pow(mag_array(l.delta, l.outputs * l.batch), 2); + printf("took %lf sec\n", what_time_is_it_now() - time); +} + +void backward_iseg_layer(const layer l, network net) +{ + axpy_cpu(l.batch*l.inputs, 1, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void forward_iseg_layer_gpu(const layer l, network net) +{ + copy_gpu(l.batch*l.inputs, net.input_gpu, 1, l.output_gpu, 1); + int b; + for (b = 0; b < l.batch; ++b){ + activate_array_gpu(l.output_gpu + b*l.outputs, l.classes*l.w*l.h, LOGISTIC); + //if(l.extra) activate_array_gpu(l.output_gpu + b*l.outputs + l.classes*l.w*l.h, l.extra*l.w*l.h, LOGISTIC); + } + + cuda_pull_array(l.output_gpu, net.input, l.batch*l.inputs); + forward_iseg_layer(l, net); + cuda_push_array(l.delta_gpu, l.delta, l.batch*l.outputs); +} + +void backward_iseg_layer_gpu(const layer l, network net) +{ + int b; + for (b = 0; b < l.batch; ++b){ + //if(l.extra) gradient_array_gpu(l.output_gpu + b*l.outputs + l.classes*l.w*l.h, l.extra*l.w*l.h, LOGISTIC, l.delta_gpu + b*l.outputs + l.classes*l.w*l.h); + } + axpy_gpu(l.batch*l.inputs, 1, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/iseg_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/iseg_layer.h" new file mode 100644 index 00000000..dd8e64e0 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/iseg_layer.h" @@ -0,0 +1,19 @@ +#ifndef ISEG_LAYER_H +#define ISEG_LAYER_H + +#include "darknet.h" +#include "layer.h" +#include "network.h" + +layer make_iseg_layer(int batch, int w, int h, int classes, int ids); +void forward_iseg_layer(const layer l, network net); +void backward_iseg_layer(const layer l, network net); +void resize_iseg_layer(layer *l, int w, int h); +int iseg_num_detections(layer l, float thresh); + +#ifdef GPU +void forward_iseg_layer_gpu(const layer l, network net); +void backward_iseg_layer_gpu(layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/l2norm_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/l2norm_layer.c" new file mode 100644 index 00000000..d099479b --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/l2norm_layer.c" @@ -0,0 +1,63 @@ +#include "l2norm_layer.h" +#include "activations.h" +#include "blas.h" +#include "cuda.h" + +#include +#include +#include +#include +#include + +layer make_l2norm_layer(int batch, int inputs) +{ + fprintf(stderr, "l2norm %4d\n", inputs); + layer l = {0}; + l.type = L2NORM; + l.batch = batch; + l.inputs = inputs; + l.outputs = inputs; + l.output = calloc(inputs*batch, sizeof(float)); + l.scales = calloc(inputs*batch, sizeof(float)); + l.delta = calloc(inputs*batch, sizeof(float)); + + l.forward = forward_l2norm_layer; + l.backward = backward_l2norm_layer; + #ifdef GPU + l.forward_gpu = forward_l2norm_layer_gpu; + l.backward_gpu = backward_l2norm_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, inputs*batch); + l.scales_gpu = cuda_make_array(l.output, inputs*batch); + l.delta_gpu = cuda_make_array(l.delta, inputs*batch); + #endif + return l; +} + +void forward_l2norm_layer(const layer l, network net) +{ + copy_cpu(l.outputs*l.batch, net.input, 1, l.output, 1); + l2normalize_cpu(l.output, l.scales, l.batch, l.out_c, l.out_w*l.out_h); +} + +void backward_l2norm_layer(const layer l, network net) +{ + //axpy_cpu(l.inputs*l.batch, 1, l.scales, 1, l.delta, 1); + axpy_cpu(l.inputs*l.batch, 1, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void forward_l2norm_layer_gpu(const layer l, network net) +{ + copy_gpu(l.outputs*l.batch, net.input_gpu, 1, l.output_gpu, 1); + l2normalize_gpu(l.output_gpu, l.scales_gpu, l.batch, l.out_c, l.out_w*l.out_h); +} + +void backward_l2norm_layer_gpu(const layer l, network net) +{ + axpy_gpu(l.batch*l.inputs, 1, l.scales_gpu, 1, l.delta_gpu, 1); + axpy_gpu(l.batch*l.inputs, 1, l.delta_gpu, 1, net.delta_gpu, 1); +} + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/l2norm_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/l2norm_layer.h" new file mode 100644 index 00000000..1ca6f710 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/l2norm_layer.h" @@ -0,0 +1,15 @@ +#ifndef L2NORM_LAYER_H +#define L2NORM_LAYER_H +#include "layer.h" +#include "network.h" + +layer make_l2norm_layer(int batch, int inputs); +void forward_l2norm_layer(const layer l, network net); +void backward_l2norm_layer(const layer l, network net); + +#ifdef GPU +void forward_l2norm_layer_gpu(const layer l, network net); +void backward_l2norm_layer_gpu(const layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/layer.c" new file mode 100644 index 00000000..c27b4776 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/layer.c" @@ -0,0 +1,97 @@ +#include "layer.h" +#include "cuda.h" + +#include + +void free_layer(layer l) +{ + if(l.type == DROPOUT){ + if(l.rand) free(l.rand); +#ifdef GPU + if(l.rand_gpu) cuda_free(l.rand_gpu); +#endif + return; + } + if(l.cweights) free(l.cweights); + if(l.indexes) free(l.indexes); + if(l.input_layers) free(l.input_layers); + if(l.input_sizes) free(l.input_sizes); + if(l.map) free(l.map); + if(l.rand) free(l.rand); + if(l.cost) free(l.cost); + if(l.state) free(l.state); + if(l.prev_state) free(l.prev_state); + if(l.forgot_state) free(l.forgot_state); + if(l.forgot_delta) free(l.forgot_delta); + if(l.state_delta) free(l.state_delta); + if(l.concat) free(l.concat); + if(l.concat_delta) free(l.concat_delta); + if(l.binary_weights) free(l.binary_weights); + if(l.biases) free(l.biases); + if(l.bias_updates) free(l.bias_updates); + if(l.scales) free(l.scales); + if(l.scale_updates) free(l.scale_updates); + if(l.weights) free(l.weights); + if(l.weight_updates) free(l.weight_updates); + if(l.delta) free(l.delta); + if(l.output) free(l.output); + if(l.squared) free(l.squared); + if(l.norms) free(l.norms); + if(l.spatial_mean) free(l.spatial_mean); + if(l.mean) free(l.mean); + if(l.variance) free(l.variance); + if(l.mean_delta) free(l.mean_delta); + if(l.variance_delta) free(l.variance_delta); + if(l.rolling_mean) free(l.rolling_mean); + if(l.rolling_variance) free(l.rolling_variance); + if(l.x) free(l.x); + if(l.x_norm) free(l.x_norm); + if(l.m) free(l.m); + if(l.v) free(l.v); + if(l.z_cpu) free(l.z_cpu); + if(l.r_cpu) free(l.r_cpu); + if(l.h_cpu) free(l.h_cpu); + if(l.binary_input) free(l.binary_input); + +#ifdef GPU + if(l.indexes_gpu) cuda_free((float *)l.indexes_gpu); + + if(l.z_gpu) cuda_free(l.z_gpu); + if(l.r_gpu) cuda_free(l.r_gpu); + if(l.h_gpu) cuda_free(l.h_gpu); + if(l.m_gpu) cuda_free(l.m_gpu); + if(l.v_gpu) cuda_free(l.v_gpu); + if(l.prev_state_gpu) cuda_free(l.prev_state_gpu); + if(l.forgot_state_gpu) cuda_free(l.forgot_state_gpu); + if(l.forgot_delta_gpu) cuda_free(l.forgot_delta_gpu); + if(l.state_gpu) cuda_free(l.state_gpu); + if(l.state_delta_gpu) cuda_free(l.state_delta_gpu); + if(l.gate_gpu) cuda_free(l.gate_gpu); + if(l.gate_delta_gpu) cuda_free(l.gate_delta_gpu); + if(l.save_gpu) cuda_free(l.save_gpu); + if(l.save_delta_gpu) cuda_free(l.save_delta_gpu); + if(l.concat_gpu) cuda_free(l.concat_gpu); + if(l.concat_delta_gpu) cuda_free(l.concat_delta_gpu); + if(l.binary_input_gpu) cuda_free(l.binary_input_gpu); + if(l.binary_weights_gpu) cuda_free(l.binary_weights_gpu); + if(l.mean_gpu) cuda_free(l.mean_gpu); + if(l.variance_gpu) cuda_free(l.variance_gpu); + if(l.rolling_mean_gpu) cuda_free(l.rolling_mean_gpu); + if(l.rolling_variance_gpu) cuda_free(l.rolling_variance_gpu); + if(l.variance_delta_gpu) cuda_free(l.variance_delta_gpu); + if(l.mean_delta_gpu) cuda_free(l.mean_delta_gpu); + if(l.x_gpu) cuda_free(l.x_gpu); + if(l.x_norm_gpu) cuda_free(l.x_norm_gpu); + if(l.weights_gpu) cuda_free(l.weights_gpu); + if(l.weight_updates_gpu) cuda_free(l.weight_updates_gpu); + if(l.biases_gpu) cuda_free(l.biases_gpu); + if(l.bias_updates_gpu) cuda_free(l.bias_updates_gpu); + if(l.scales_gpu) cuda_free(l.scales_gpu); + if(l.scale_updates_gpu) cuda_free(l.scale_updates_gpu); + if(l.output_gpu) cuda_free(l.output_gpu); + if(l.delta_gpu) cuda_free(l.delta_gpu); + if(l.rand_gpu) cuda_free(l.rand_gpu); + if(l.squared_gpu) cuda_free(l.squared_gpu); + if(l.norms_gpu) cuda_free(l.norms_gpu); +#endif +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/layer.h" new file mode 100644 index 00000000..af6cd2ab --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/layer.h" @@ -0,0 +1 @@ +#include "darknet.h" diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/list.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/list.c" new file mode 100644 index 00000000..0e4165d3 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/list.c" @@ -0,0 +1,92 @@ +#include +#include +#include "list.h" + +list *make_list() +{ + list *l = malloc(sizeof(list)); + l->size = 0; + l->front = 0; + l->back = 0; + return l; +} + +/* +void transfer_node(list *s, list *d, node *n) +{ + node *prev, *next; + prev = n->prev; + next = n->next; + if(prev) prev->next = next; + if(next) next->prev = prev; + --s->size; + if(s->front == n) s->front = next; + if(s->back == n) s->back = prev; +} +*/ + +void *list_pop(list *l){ + if(!l->back) return 0; + node *b = l->back; + void *val = b->val; + l->back = b->prev; + if(l->back) l->back->next = 0; + free(b); + --l->size; + + return val; +} + +void list_insert(list *l, void *val) +{ + node *new = malloc(sizeof(node)); + new->val = val; + new->next = 0; + + if(!l->back){ + l->front = new; + new->prev = 0; + }else{ + l->back->next = new; + new->prev = l->back; + } + l->back = new; + ++l->size; +} + +void free_node(node *n) +{ + node *next; + while(n) { + next = n->next; + free(n); + n = next; + } +} + +void free_list(list *l) +{ + free_node(l->front); + free(l); +} + +void free_list_contents(list *l) +{ + node *n = l->front; + while(n){ + free(n->val); + n = n->next; + } +} + +void **list_to_array(list *l) +{ + void **a = calloc(l->size, sizeof(void*)); + int count = 0; + node *n = l->front; + while(n){ + a[count++] = n->val; + n = n->next; + } + return a; +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/list.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/list.h" new file mode 100644 index 00000000..6b445c71 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/list.h" @@ -0,0 +1,13 @@ +#ifndef LIST_H +#define LIST_H +#include "darknet.h" + +list *make_list(); +int list_find(list *l, void *val); + +void list_insert(list *, void *); + + +void free_list_contents(list *l); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/local_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/local_layer.c" new file mode 100644 index 00000000..74f6910a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/local_layer.c" @@ -0,0 +1,293 @@ +#include "local_layer.h" +#include "utils.h" +#include "im2col.h" +#include "col2im.h" +#include "blas.h" +#include "gemm.h" +#include +#include + +int local_out_height(local_layer l) +{ + int h = l.h; + if (!l.pad) h -= l.size; + else h -= 1; + return h/l.stride + 1; +} + +int local_out_width(local_layer l) +{ + int w = l.w; + if (!l.pad) w -= l.size; + else w -= 1; + return w/l.stride + 1; +} + +local_layer make_local_layer(int batch, int h, int w, int c, int n, int size, int stride, int pad, ACTIVATION activation) +{ + int i; + local_layer l = {0}; + l.type = LOCAL; + + l.h = h; + l.w = w; + l.c = c; + l.n = n; + l.batch = batch; + l.stride = stride; + l.size = size; + l.pad = pad; + + int out_h = local_out_height(l); + int out_w = local_out_width(l); + int locations = out_h*out_w; + l.out_h = out_h; + l.out_w = out_w; + l.out_c = n; + l.outputs = l.out_h * l.out_w * l.out_c; + l.inputs = l.w * l.h * l.c; + + l.weights = calloc(c*n*size*size*locations, sizeof(float)); + l.weight_updates = calloc(c*n*size*size*locations, sizeof(float)); + + l.biases = calloc(l.outputs, sizeof(float)); + l.bias_updates = calloc(l.outputs, sizeof(float)); + + // float scale = 1./sqrt(size*size*c); + float scale = sqrt(2./(size*size*c)); + for(i = 0; i < c*n*size*size; ++i) l.weights[i] = scale*rand_uniform(-1,1); + + l.output = calloc(l.batch*out_h * out_w * n, sizeof(float)); + l.delta = calloc(l.batch*out_h * out_w * n, sizeof(float)); + + l.workspace_size = out_h*out_w*size*size*c; + + l.forward = forward_local_layer; + l.backward = backward_local_layer; + l.update = update_local_layer; + +#ifdef GPU + l.forward_gpu = forward_local_layer_gpu; + l.backward_gpu = backward_local_layer_gpu; + l.update_gpu = update_local_layer_gpu; + + l.weights_gpu = cuda_make_array(l.weights, c*n*size*size*locations); + l.weight_updates_gpu = cuda_make_array(l.weight_updates, c*n*size*size*locations); + + l.biases_gpu = cuda_make_array(l.biases, l.outputs); + l.bias_updates_gpu = cuda_make_array(l.bias_updates, l.outputs); + + l.delta_gpu = cuda_make_array(l.delta, l.batch*out_h*out_w*n); + l.output_gpu = cuda_make_array(l.output, l.batch*out_h*out_w*n); + +#endif + l.activation = activation; + + fprintf(stderr, "Local Layer: %d x %d x %d image, %d filters -> %d x %d x %d image\n", h,w,c,n, out_h, out_w, n); + + return l; +} + +void forward_local_layer(const local_layer l, network net) +{ + int out_h = local_out_height(l); + int out_w = local_out_width(l); + int i, j; + int locations = out_h * out_w; + + for(i = 0; i < l.batch; ++i){ + copy_cpu(l.outputs, l.biases, 1, l.output + i*l.outputs, 1); + } + + for(i = 0; i < l.batch; ++i){ + float *input = net.input + i*l.w*l.h*l.c; + im2col_cpu(input, l.c, l.h, l.w, + l.size, l.stride, l.pad, net.workspace); + float *output = l.output + i*l.outputs; + for(j = 0; j < locations; ++j){ + float *a = l.weights + j*l.size*l.size*l.c*l.n; + float *b = net.workspace + j; + float *c = output + j; + + int m = l.n; + int n = 1; + int k = l.size*l.size*l.c; + + gemm(0,0,m,n,k,1,a,k,b,locations,1,c,locations); + } + } + activate_array(l.output, l.outputs*l.batch, l.activation); +} + +void backward_local_layer(local_layer l, network net) +{ + int i, j; + int locations = l.out_w*l.out_h; + + gradient_array(l.output, l.outputs*l.batch, l.activation, l.delta); + + for(i = 0; i < l.batch; ++i){ + axpy_cpu(l.outputs, 1, l.delta + i*l.outputs, 1, l.bias_updates, 1); + } + + for(i = 0; i < l.batch; ++i){ + float *input = net.input + i*l.w*l.h*l.c; + im2col_cpu(input, l.c, l.h, l.w, + l.size, l.stride, l.pad, net.workspace); + + for(j = 0; j < locations; ++j){ + float *a = l.delta + i*l.outputs + j; + float *b = net.workspace + j; + float *c = l.weight_updates + j*l.size*l.size*l.c*l.n; + int m = l.n; + int n = l.size*l.size*l.c; + int k = 1; + + gemm(0,1,m,n,k,1,a,locations,b,locations,1,c,n); + } + + if(net.delta){ + for(j = 0; j < locations; ++j){ + float *a = l.weights + j*l.size*l.size*l.c*l.n; + float *b = l.delta + i*l.outputs + j; + float *c = net.workspace + j; + + int m = l.size*l.size*l.c; + int n = 1; + int k = l.n; + + gemm(1,0,m,n,k,1,a,m,b,locations,0,c,locations); + } + + col2im_cpu(net.workspace, l.c, l.h, l.w, l.size, l.stride, l.pad, net.delta+i*l.c*l.h*l.w); + } + } +} + +void update_local_layer(local_layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + + int locations = l.out_w*l.out_h; + int size = l.size*l.size*l.c*l.n*locations; + axpy_cpu(l.outputs, learning_rate/batch, l.bias_updates, 1, l.biases, 1); + scal_cpu(l.outputs, momentum, l.bias_updates, 1); + + axpy_cpu(size, -decay*batch, l.weights, 1, l.weight_updates, 1); + axpy_cpu(size, learning_rate/batch, l.weight_updates, 1, l.weights, 1); + scal_cpu(size, momentum, l.weight_updates, 1); +} + +#ifdef GPU + +void forward_local_layer_gpu(const local_layer l, network net) +{ + int out_h = local_out_height(l); + int out_w = local_out_width(l); + int i, j; + int locations = out_h * out_w; + + for(i = 0; i < l.batch; ++i){ + copy_gpu(l.outputs, l.biases_gpu, 1, l.output_gpu + i*l.outputs, 1); + } + + for(i = 0; i < l.batch; ++i){ + float *input = net.input_gpu + i*l.w*l.h*l.c; + im2col_gpu(input, l.c, l.h, l.w, + l.size, l.stride, l.pad, net.workspace); + float *output = l.output_gpu + i*l.outputs; + for(j = 0; j < locations; ++j){ + float *a = l.weights_gpu + j*l.size*l.size*l.c*l.n; + float *b = net.workspace + j; + float *c = output + j; + + int m = l.n; + int n = 1; + int k = l.size*l.size*l.c; + + gemm_gpu(0,0,m,n,k,1,a,k,b,locations,1,c,locations); + } + } + activate_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation); +} + +void backward_local_layer_gpu(local_layer l, network net) +{ + int i, j; + int locations = l.out_w*l.out_h; + + gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); + for(i = 0; i < l.batch; ++i){ + axpy_gpu(l.outputs, 1, l.delta_gpu + i*l.outputs, 1, l.bias_updates_gpu, 1); + } + + for(i = 0; i < l.batch; ++i){ + float *input = net.input_gpu + i*l.w*l.h*l.c; + im2col_gpu(input, l.c, l.h, l.w, + l.size, l.stride, l.pad, net.workspace); + + for(j = 0; j < locations; ++j){ + float *a = l.delta_gpu + i*l.outputs + j; + float *b = net.workspace + j; + float *c = l.weight_updates_gpu + j*l.size*l.size*l.c*l.n; + int m = l.n; + int n = l.size*l.size*l.c; + int k = 1; + + gemm_gpu(0,1,m,n,k,1,a,locations,b,locations,1,c,n); + } + + if(net.delta_gpu){ + for(j = 0; j < locations; ++j){ + float *a = l.weights_gpu + j*l.size*l.size*l.c*l.n; + float *b = l.delta_gpu + i*l.outputs + j; + float *c = net.workspace + j; + + int m = l.size*l.size*l.c; + int n = 1; + int k = l.n; + + gemm_gpu(1,0,m,n,k,1,a,m,b,locations,0,c,locations); + } + + col2im_gpu(net.workspace, l.c, l.h, l.w, l.size, l.stride, l.pad, net.delta_gpu+i*l.c*l.h*l.w); + } + } +} + +void update_local_layer_gpu(local_layer l, update_args a) +{ + float learning_rate = a.learning_rate*l.learning_rate_scale; + float momentum = a.momentum; + float decay = a.decay; + int batch = a.batch; + + int locations = l.out_w*l.out_h; + int size = l.size*l.size*l.c*l.n*locations; + axpy_gpu(l.outputs, learning_rate/batch, l.bias_updates_gpu, 1, l.biases_gpu, 1); + scal_gpu(l.outputs, momentum, l.bias_updates_gpu, 1); + + axpy_gpu(size, -decay*batch, l.weights_gpu, 1, l.weight_updates_gpu, 1); + axpy_gpu(size, learning_rate/batch, l.weight_updates_gpu, 1, l.weights_gpu, 1); + scal_gpu(size, momentum, l.weight_updates_gpu, 1); +} + +void pull_local_layer(local_layer l) +{ + int locations = l.out_w*l.out_h; + int size = l.size*l.size*l.c*l.n*locations; + cuda_pull_array(l.weights_gpu, l.weights, size); + cuda_pull_array(l.biases_gpu, l.biases, l.outputs); +} + +void push_local_layer(local_layer l) +{ + int locations = l.out_w*l.out_h; + int size = l.size*l.size*l.c*l.n*locations; + cuda_push_array(l.weights_gpu, l.weights, size); + cuda_push_array(l.biases_gpu, l.biases, l.outputs); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/local_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/local_layer.h" new file mode 100644 index 00000000..776e572f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/local_layer.h" @@ -0,0 +1,31 @@ +#ifndef LOCAL_LAYER_H +#define LOCAL_LAYER_H + +#include "cuda.h" +#include "image.h" +#include "activations.h" +#include "layer.h" +#include "network.h" + +typedef layer local_layer; + +#ifdef GPU +void forward_local_layer_gpu(local_layer layer, network net); +void backward_local_layer_gpu(local_layer layer, network net); +void update_local_layer_gpu(local_layer layer, update_args a); + +void push_local_layer(local_layer layer); +void pull_local_layer(local_layer layer); +#endif + +local_layer make_local_layer(int batch, int h, int w, int c, int n, int size, int stride, int pad, ACTIVATION activation); + +void forward_local_layer(const local_layer layer, network net); +void backward_local_layer(local_layer layer, network net); +void update_local_layer(local_layer layer, update_args a); + +void bias_output(float *output, float *biases, int batch, int n, int size); +void backward_bias(float *bias_updates, float *delta, int batch, int n, int size); + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/logistic_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/logistic_layer.c" new file mode 100644 index 00000000..b2b3d6b1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/logistic_layer.c" @@ -0,0 +1,71 @@ +#include "logistic_layer.h" +#include "activations.h" +#include "blas.h" +#include "cuda.h" + +#include +#include +#include +#include +#include + +layer make_logistic_layer(int batch, int inputs) +{ + fprintf(stderr, "logistic x entropy %4d\n", inputs); + layer l = {0}; + l.type = LOGXENT; + l.batch = batch; + l.inputs = inputs; + l.outputs = inputs; + l.loss = calloc(inputs*batch, sizeof(float)); + l.output = calloc(inputs*batch, sizeof(float)); + l.delta = calloc(inputs*batch, sizeof(float)); + l.cost = calloc(1, sizeof(float)); + + l.forward = forward_logistic_layer; + l.backward = backward_logistic_layer; + #ifdef GPU + l.forward_gpu = forward_logistic_layer_gpu; + l.backward_gpu = backward_logistic_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, inputs*batch); + l.loss_gpu = cuda_make_array(l.loss, inputs*batch); + l.delta_gpu = cuda_make_array(l.delta, inputs*batch); + #endif + return l; +} + +void forward_logistic_layer(const layer l, network net) +{ + copy_cpu(l.outputs*l.batch, net.input, 1, l.output, 1); + activate_array(l.output, l.outputs*l.batch, LOGISTIC); + if(net.truth){ + logistic_x_ent_cpu(l.batch*l.inputs, l.output, net.truth, l.delta, l.loss); + l.cost[0] = sum_array(l.loss, l.batch*l.inputs); + } +} + +void backward_logistic_layer(const layer l, network net) +{ + axpy_cpu(l.inputs*l.batch, 1, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void forward_logistic_layer_gpu(const layer l, network net) +{ + copy_gpu(l.outputs*l.batch, net.input_gpu, 1, l.output_gpu, 1); + activate_array_gpu(l.output_gpu, l.outputs*l.batch, LOGISTIC); + if(net.truth){ + logistic_x_ent_gpu(l.batch*l.inputs, l.output_gpu, net.truth_gpu, l.delta_gpu, l.loss_gpu); + cuda_pull_array(l.loss_gpu, l.loss, l.batch*l.inputs); + l.cost[0] = sum_array(l.loss, l.batch*l.inputs); + } +} + +void backward_logistic_layer_gpu(const layer l, network net) +{ + axpy_gpu(l.batch*l.inputs, 1, l.delta_gpu, 1, net.delta_gpu, 1); +} + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/logistic_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/logistic_layer.h" new file mode 100644 index 00000000..9c25bee3 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/logistic_layer.h" @@ -0,0 +1,15 @@ +#ifndef LOGISTIC_LAYER_H +#define LOGISTIC_LAYER_H +#include "layer.h" +#include "network.h" + +layer make_logistic_layer(int batch, int inputs); +void forward_logistic_layer(const layer l, network net); +void backward_logistic_layer(const layer l, network net); + +#ifdef GPU +void forward_logistic_layer_gpu(const layer l, network net); +void backward_logistic_layer_gpu(const layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/lstm_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/lstm_layer.c" new file mode 100644 index 00000000..fb07de20 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/lstm_layer.c" @@ -0,0 +1,626 @@ +#include "lstm_layer.h" +#include "connected_layer.h" +#include "utils.h" +#include "cuda.h" +#include "blas.h" +#include "gemm.h" + +#include +#include +#include +#include + +static void increment_layer(layer *l, int steps) +{ + int num = l->outputs*l->batch*steps; + l->output += num; + l->delta += num; + l->x += num; + l->x_norm += num; + +#ifdef GPU + l->output_gpu += num; + l->delta_gpu += num; + l->x_gpu += num; + l->x_norm_gpu += num; +#endif +} + +layer make_lstm_layer(int batch, int inputs, int outputs, int steps, int batch_normalize, int adam) +{ + fprintf(stderr, "LSTM Layer: %d inputs, %d outputs\n", inputs, outputs); + batch = batch / steps; + layer l = { 0 }; + l.batch = batch; + l.type = LSTM; + l.steps = steps; + l.inputs = inputs; + + l.uf = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.uf) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.uf->batch = batch; + + l.ui = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.ui) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.ui->batch = batch; + + l.ug = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.ug) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.ug->batch = batch; + + l.uo = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.uo) = make_connected_layer(batch*steps, inputs, outputs, LINEAR, batch_normalize, adam); + l.uo->batch = batch; + + l.wf = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wf) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wf->batch = batch; + + l.wi = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wi) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wi->batch = batch; + + l.wg = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wg) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wg->batch = batch; + + l.wo = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.wo) = make_connected_layer(batch*steps, outputs, outputs, LINEAR, batch_normalize, adam); + l.wo->batch = batch; + + l.batch_normalize = batch_normalize; + l.outputs = outputs; + + l.output = calloc(outputs*batch*steps, sizeof(float)); + l.state = calloc(outputs*batch, sizeof(float)); + + l.forward = forward_lstm_layer; + l.update = update_lstm_layer; + + l.prev_state_cpu = calloc(batch*outputs, sizeof(float)); + l.prev_cell_cpu = calloc(batch*outputs, sizeof(float)); + l.cell_cpu = calloc(batch*outputs*steps, sizeof(float)); + + l.f_cpu = calloc(batch*outputs, sizeof(float)); + l.i_cpu = calloc(batch*outputs, sizeof(float)); + l.g_cpu = calloc(batch*outputs, sizeof(float)); + l.o_cpu = calloc(batch*outputs, sizeof(float)); + l.c_cpu = calloc(batch*outputs, sizeof(float)); + l.h_cpu = calloc(batch*outputs, sizeof(float)); + l.temp_cpu = calloc(batch*outputs, sizeof(float)); + l.temp2_cpu = calloc(batch*outputs, sizeof(float)); + l.temp3_cpu = calloc(batch*outputs, sizeof(float)); + l.dc_cpu = calloc(batch*outputs, sizeof(float)); + l.dh_cpu = calloc(batch*outputs, sizeof(float)); + +#ifdef GPU + l.forward_gpu = forward_lstm_layer_gpu; + l.backward_gpu = backward_lstm_layer_gpu; + l.update_gpu = update_lstm_layer_gpu; + + l.output_gpu = cuda_make_array(0, batch*outputs*steps); + l.delta_gpu = cuda_make_array(0, batch*l.outputs*steps); + + l.prev_state_gpu = cuda_make_array(0, batch*outputs); + l.prev_cell_gpu = cuda_make_array(0, batch*outputs); + l.cell_gpu = cuda_make_array(0, batch*outputs*steps); + + l.f_gpu = cuda_make_array(0, batch*outputs); + l.i_gpu = cuda_make_array(0, batch*outputs); + l.g_gpu = cuda_make_array(0, batch*outputs); + l.o_gpu = cuda_make_array(0, batch*outputs); + l.c_gpu = cuda_make_array(0, batch*outputs); + l.h_gpu = cuda_make_array(0, batch*outputs); + l.temp_gpu = cuda_make_array(0, batch*outputs); + l.temp2_gpu = cuda_make_array(0, batch*outputs); + l.temp3_gpu = cuda_make_array(0, batch*outputs); + l.dc_gpu = cuda_make_array(0, batch*outputs); + l.dh_gpu = cuda_make_array(0, batch*outputs); +#ifdef CUDNN + cudnnSetTensor4dDescriptor(l.wf->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wf->out_c, l.wf->out_h, l.wf->out_w); + cudnnSetTensor4dDescriptor(l.wi->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wi->out_c, l.wi->out_h, l.wi->out_w); + cudnnSetTensor4dDescriptor(l.wg->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wg->out_c, l.wg->out_h, l.wg->out_w); + cudnnSetTensor4dDescriptor(l.wo->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.wo->out_c, l.wo->out_h, l.wo->out_w); + + cudnnSetTensor4dDescriptor(l.uf->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.uf->out_c, l.uf->out_h, l.uf->out_w); + cudnnSetTensor4dDescriptor(l.ui->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.ui->out_c, l.ui->out_h, l.ui->out_w); + cudnnSetTensor4dDescriptor(l.ug->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.ug->out_c, l.ug->out_h, l.ug->out_w); + cudnnSetTensor4dDescriptor(l.uo->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.uo->out_c, l.uo->out_h, l.uo->out_w); +#endif + +#endif + + return l; +} + +void update_lstm_layer(layer l, update_args a) +{ + update_connected_layer(*(l.wf), a); + update_connected_layer(*(l.wi), a); + update_connected_layer(*(l.wg), a); + update_connected_layer(*(l.wo), a); + update_connected_layer(*(l.uf), a); + update_connected_layer(*(l.ui), a); + update_connected_layer(*(l.ug), a); + update_connected_layer(*(l.uo), a); +} + +void forward_lstm_layer(layer l, network state) +{ + network s = { 0 }; + s.train = state.train; + int i; + layer wf = *(l.wf); + layer wi = *(l.wi); + layer wg = *(l.wg); + layer wo = *(l.wo); + + layer uf = *(l.uf); + layer ui = *(l.ui); + layer ug = *(l.ug); + layer uo = *(l.uo); + + fill_cpu(l.outputs * l.batch * l.steps, 0, wf.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, wi.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, wg.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, wo.delta, 1); + + fill_cpu(l.outputs * l.batch * l.steps, 0, uf.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, ui.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, ug.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, uo.delta, 1); + if (state.train) { + fill_cpu(l.outputs * l.batch * l.steps, 0, l.delta, 1); + } + + for (i = 0; i < l.steps; ++i) { + s.input = l.h_cpu; + forward_connected_layer(wf, s); + forward_connected_layer(wi, s); + forward_connected_layer(wg, s); + forward_connected_layer(wo, s); + + s.input = state.input; + forward_connected_layer(uf, s); + forward_connected_layer(ui, s); + forward_connected_layer(ug, s); + forward_connected_layer(uo, s); + + copy_cpu(l.outputs*l.batch, wf.output, 1, l.f_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, uf.output, 1, l.f_cpu, 1); + + copy_cpu(l.outputs*l.batch, wi.output, 1, l.i_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, ui.output, 1, l.i_cpu, 1); + + copy_cpu(l.outputs*l.batch, wg.output, 1, l.g_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, ug.output, 1, l.g_cpu, 1); + + copy_cpu(l.outputs*l.batch, wo.output, 1, l.o_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, uo.output, 1, l.o_cpu, 1); + + activate_array(l.f_cpu, l.outputs*l.batch, LOGISTIC); + activate_array(l.i_cpu, l.outputs*l.batch, LOGISTIC); + activate_array(l.g_cpu, l.outputs*l.batch, TANH); + activate_array(l.o_cpu, l.outputs*l.batch, LOGISTIC); + + copy_cpu(l.outputs*l.batch, l.i_cpu, 1, l.temp_cpu, 1); + mul_cpu(l.outputs*l.batch, l.g_cpu, 1, l.temp_cpu, 1); + mul_cpu(l.outputs*l.batch, l.f_cpu, 1, l.c_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, l.temp_cpu, 1, l.c_cpu, 1); + + copy_cpu(l.outputs*l.batch, l.c_cpu, 1, l.h_cpu, 1); + activate_array(l.h_cpu, l.outputs*l.batch, TANH); + mul_cpu(l.outputs*l.batch, l.o_cpu, 1, l.h_cpu, 1); + + copy_cpu(l.outputs*l.batch, l.c_cpu, 1, l.cell_cpu, 1); + copy_cpu(l.outputs*l.batch, l.h_cpu, 1, l.output, 1); + + state.input += l.inputs*l.batch; + l.output += l.outputs*l.batch; + l.cell_cpu += l.outputs*l.batch; + + increment_layer(&wf, 1); + increment_layer(&wi, 1); + increment_layer(&wg, 1); + increment_layer(&wo, 1); + + increment_layer(&uf, 1); + increment_layer(&ui, 1); + increment_layer(&ug, 1); + increment_layer(&uo, 1); + } +} + +void backward_lstm_layer(layer l, network state) +{ + network s = { 0 }; + s.train = state.train; + int i; + layer wf = *(l.wf); + layer wi = *(l.wi); + layer wg = *(l.wg); + layer wo = *(l.wo); + + layer uf = *(l.uf); + layer ui = *(l.ui); + layer ug = *(l.ug); + layer uo = *(l.uo); + + increment_layer(&wf, l.steps - 1); + increment_layer(&wi, l.steps - 1); + increment_layer(&wg, l.steps - 1); + increment_layer(&wo, l.steps - 1); + + increment_layer(&uf, l.steps - 1); + increment_layer(&ui, l.steps - 1); + increment_layer(&ug, l.steps - 1); + increment_layer(&uo, l.steps - 1); + + state.input += l.inputs*l.batch*(l.steps - 1); + if (state.delta) state.delta += l.inputs*l.batch*(l.steps - 1); + + l.output += l.outputs*l.batch*(l.steps - 1); + l.cell_cpu += l.outputs*l.batch*(l.steps - 1); + l.delta += l.outputs*l.batch*(l.steps - 1); + + for (i = l.steps - 1; i >= 0; --i) { + if (i != 0) copy_cpu(l.outputs*l.batch, l.cell_cpu - l.outputs*l.batch, 1, l.prev_cell_cpu, 1); + copy_cpu(l.outputs*l.batch, l.cell_cpu, 1, l.c_cpu, 1); + if (i != 0) copy_cpu(l.outputs*l.batch, l.output - l.outputs*l.batch, 1, l.prev_state_cpu, 1); + copy_cpu(l.outputs*l.batch, l.output, 1, l.h_cpu, 1); + + l.dh_cpu = (i == 0) ? 0 : l.delta - l.outputs*l.batch; + + copy_cpu(l.outputs*l.batch, wf.output, 1, l.f_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, uf.output, 1, l.f_cpu, 1); + + copy_cpu(l.outputs*l.batch, wi.output, 1, l.i_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, ui.output, 1, l.i_cpu, 1); + + copy_cpu(l.outputs*l.batch, wg.output, 1, l.g_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, ug.output, 1, l.g_cpu, 1); + + copy_cpu(l.outputs*l.batch, wo.output, 1, l.o_cpu, 1); + axpy_cpu(l.outputs*l.batch, 1, uo.output, 1, l.o_cpu, 1); + + activate_array(l.f_cpu, l.outputs*l.batch, LOGISTIC); + activate_array(l.i_cpu, l.outputs*l.batch, LOGISTIC); + activate_array(l.g_cpu, l.outputs*l.batch, TANH); + activate_array(l.o_cpu, l.outputs*l.batch, LOGISTIC); + + copy_cpu(l.outputs*l.batch, l.delta, 1, l.temp3_cpu, 1); + + copy_cpu(l.outputs*l.batch, l.c_cpu, 1, l.temp_cpu, 1); + activate_array(l.temp_cpu, l.outputs*l.batch, TANH); + + copy_cpu(l.outputs*l.batch, l.temp3_cpu, 1, l.temp2_cpu, 1); + mul_cpu(l.outputs*l.batch, l.o_cpu, 1, l.temp2_cpu, 1); + + gradient_array(l.temp_cpu, l.outputs*l.batch, TANH, l.temp2_cpu); + axpy_cpu(l.outputs*l.batch, 1, l.dc_cpu, 1, l.temp2_cpu, 1); + + copy_cpu(l.outputs*l.batch, l.c_cpu, 1, l.temp_cpu, 1); + activate_array(l.temp_cpu, l.outputs*l.batch, TANH); + mul_cpu(l.outputs*l.batch, l.temp3_cpu, 1, l.temp_cpu, 1); + gradient_array(l.o_cpu, l.outputs*l.batch, LOGISTIC, l.temp_cpu); + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wo.delta, 1); + s.input = l.prev_state_cpu; + s.delta = l.dh_cpu; + backward_connected_layer(wo, s); + + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, uo.delta, 1); + s.input = state.input; + s.delta = state.delta; + backward_connected_layer(uo, s); + + copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1); + mul_cpu(l.outputs*l.batch, l.i_cpu, 1, l.temp_cpu, 1); + gradient_array(l.g_cpu, l.outputs*l.batch, TANH, l.temp_cpu); + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wg.delta, 1); + s.input = l.prev_state_cpu; + s.delta = l.dh_cpu; + backward_connected_layer(wg, s); + + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, ug.delta, 1); + s.input = state.input; + s.delta = state.delta; + backward_connected_layer(ug, s); + + copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1); + mul_cpu(l.outputs*l.batch, l.g_cpu, 1, l.temp_cpu, 1); + gradient_array(l.i_cpu, l.outputs*l.batch, LOGISTIC, l.temp_cpu); + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wi.delta, 1); + s.input = l.prev_state_cpu; + s.delta = l.dh_cpu; + backward_connected_layer(wi, s); + + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, ui.delta, 1); + s.input = state.input; + s.delta = state.delta; + backward_connected_layer(ui, s); + + copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1); + mul_cpu(l.outputs*l.batch, l.prev_cell_cpu, 1, l.temp_cpu, 1); + gradient_array(l.f_cpu, l.outputs*l.batch, LOGISTIC, l.temp_cpu); + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, wf.delta, 1); + s.input = l.prev_state_cpu; + s.delta = l.dh_cpu; + backward_connected_layer(wf, s); + + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, uf.delta, 1); + s.input = state.input; + s.delta = state.delta; + backward_connected_layer(uf, s); + + copy_cpu(l.outputs*l.batch, l.temp2_cpu, 1, l.temp_cpu, 1); + mul_cpu(l.outputs*l.batch, l.f_cpu, 1, l.temp_cpu, 1); + copy_cpu(l.outputs*l.batch, l.temp_cpu, 1, l.dc_cpu, 1); + + state.input -= l.inputs*l.batch; + if (state.delta) state.delta -= l.inputs*l.batch; + l.output -= l.outputs*l.batch; + l.cell_cpu -= l.outputs*l.batch; + l.delta -= l.outputs*l.batch; + + increment_layer(&wf, -1); + increment_layer(&wi, -1); + increment_layer(&wg, -1); + increment_layer(&wo, -1); + + increment_layer(&uf, -1); + increment_layer(&ui, -1); + increment_layer(&ug, -1); + increment_layer(&uo, -1); + } +} + +#ifdef GPU +void update_lstm_layer_gpu(layer l, update_args a) +{ + update_connected_layer_gpu(*(l.wf), a); + update_connected_layer_gpu(*(l.wi), a); + update_connected_layer_gpu(*(l.wg), a); + update_connected_layer_gpu(*(l.wo), a); + update_connected_layer_gpu(*(l.uf), a); + update_connected_layer_gpu(*(l.ui), a); + update_connected_layer_gpu(*(l.ug), a); + update_connected_layer_gpu(*(l.uo), a); +} + +void forward_lstm_layer_gpu(layer l, network state) +{ + network s = { 0 }; + s.train = state.train; + int i; + layer wf = *(l.wf); + layer wi = *(l.wi); + layer wg = *(l.wg); + layer wo = *(l.wo); + + layer uf = *(l.uf); + layer ui = *(l.ui); + layer ug = *(l.ug); + layer uo = *(l.uo); + + fill_gpu(l.outputs * l.batch * l.steps, 0, wf.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, wi.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, wg.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, wo.delta_gpu, 1); + + fill_gpu(l.outputs * l.batch * l.steps, 0, uf.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, ui.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, ug.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, uo.delta_gpu, 1); + if (state.train) { + fill_gpu(l.outputs * l.batch * l.steps, 0, l.delta_gpu, 1); + } + + for (i = 0; i < l.steps; ++i) { + s.input_gpu = l.h_gpu; + forward_connected_layer_gpu(wf, s); + forward_connected_layer_gpu(wi, s); + forward_connected_layer_gpu(wg, s); + forward_connected_layer_gpu(wo, s); + + s.input_gpu = state.input_gpu; + forward_connected_layer_gpu(uf, s); + forward_connected_layer_gpu(ui, s); + forward_connected_layer_gpu(ug, s); + forward_connected_layer_gpu(uo, s); + + copy_gpu(l.outputs*l.batch, wf.output_gpu, 1, l.f_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, uf.output_gpu, 1, l.f_gpu, 1); + + copy_gpu(l.outputs*l.batch, wi.output_gpu, 1, l.i_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, ui.output_gpu, 1, l.i_gpu, 1); + + copy_gpu(l.outputs*l.batch, wg.output_gpu, 1, l.g_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, ug.output_gpu, 1, l.g_gpu, 1); + + copy_gpu(l.outputs*l.batch, wo.output_gpu, 1, l.o_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, uo.output_gpu, 1, l.o_gpu, 1); + + activate_array_gpu(l.f_gpu, l.outputs*l.batch, LOGISTIC); + activate_array_gpu(l.i_gpu, l.outputs*l.batch, LOGISTIC); + activate_array_gpu(l.g_gpu, l.outputs*l.batch, TANH); + activate_array_gpu(l.o_gpu, l.outputs*l.batch, LOGISTIC); + + copy_gpu(l.outputs*l.batch, l.i_gpu, 1, l.temp_gpu, 1); + mul_gpu(l.outputs*l.batch, l.g_gpu, 1, l.temp_gpu, 1); + mul_gpu(l.outputs*l.batch, l.f_gpu, 1, l.c_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, l.temp_gpu, 1, l.c_gpu, 1); + + copy_gpu(l.outputs*l.batch, l.c_gpu, 1, l.h_gpu, 1); + activate_array_gpu(l.h_gpu, l.outputs*l.batch, TANH); + mul_gpu(l.outputs*l.batch, l.o_gpu, 1, l.h_gpu, 1); + + copy_gpu(l.outputs*l.batch, l.c_gpu, 1, l.cell_gpu, 1); + copy_gpu(l.outputs*l.batch, l.h_gpu, 1, l.output_gpu, 1); + + state.input_gpu += l.inputs*l.batch; + l.output_gpu += l.outputs*l.batch; + l.cell_gpu += l.outputs*l.batch; + + increment_layer(&wf, 1); + increment_layer(&wi, 1); + increment_layer(&wg, 1); + increment_layer(&wo, 1); + + increment_layer(&uf, 1); + increment_layer(&ui, 1); + increment_layer(&ug, 1); + increment_layer(&uo, 1); + } +} + +void backward_lstm_layer_gpu(layer l, network state) +{ + network s = { 0 }; + s.train = state.train; + int i; + layer wf = *(l.wf); + layer wi = *(l.wi); + layer wg = *(l.wg); + layer wo = *(l.wo); + + layer uf = *(l.uf); + layer ui = *(l.ui); + layer ug = *(l.ug); + layer uo = *(l.uo); + + increment_layer(&wf, l.steps - 1); + increment_layer(&wi, l.steps - 1); + increment_layer(&wg, l.steps - 1); + increment_layer(&wo, l.steps - 1); + + increment_layer(&uf, l.steps - 1); + increment_layer(&ui, l.steps - 1); + increment_layer(&ug, l.steps - 1); + increment_layer(&uo, l.steps - 1); + + state.input_gpu += l.inputs*l.batch*(l.steps - 1); + if (state.delta_gpu) state.delta_gpu += l.inputs*l.batch*(l.steps - 1); + + l.output_gpu += l.outputs*l.batch*(l.steps - 1); + l.cell_gpu += l.outputs*l.batch*(l.steps - 1); + l.delta_gpu += l.outputs*l.batch*(l.steps - 1); + + for (i = l.steps - 1; i >= 0; --i) { + if (i != 0) copy_gpu(l.outputs*l.batch, l.cell_gpu - l.outputs*l.batch, 1, l.prev_cell_gpu, 1); + copy_gpu(l.outputs*l.batch, l.cell_gpu, 1, l.c_gpu, 1); + if (i != 0) copy_gpu(l.outputs*l.batch, l.output_gpu - l.outputs*l.batch, 1, l.prev_state_gpu, 1); + copy_gpu(l.outputs*l.batch, l.output_gpu, 1, l.h_gpu, 1); + + l.dh_gpu = (i == 0) ? 0 : l.delta_gpu - l.outputs*l.batch; + + copy_gpu(l.outputs*l.batch, wf.output_gpu, 1, l.f_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, uf.output_gpu, 1, l.f_gpu, 1); + + copy_gpu(l.outputs*l.batch, wi.output_gpu, 1, l.i_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, ui.output_gpu, 1, l.i_gpu, 1); + + copy_gpu(l.outputs*l.batch, wg.output_gpu, 1, l.g_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, ug.output_gpu, 1, l.g_gpu, 1); + + copy_gpu(l.outputs*l.batch, wo.output_gpu, 1, l.o_gpu, 1); + axpy_gpu(l.outputs*l.batch, 1, uo.output_gpu, 1, l.o_gpu, 1); + + activate_array_gpu(l.f_gpu, l.outputs*l.batch, LOGISTIC); + activate_array_gpu(l.i_gpu, l.outputs*l.batch, LOGISTIC); + activate_array_gpu(l.g_gpu, l.outputs*l.batch, TANH); + activate_array_gpu(l.o_gpu, l.outputs*l.batch, LOGISTIC); + + copy_gpu(l.outputs*l.batch, l.delta_gpu, 1, l.temp3_gpu, 1); + + copy_gpu(l.outputs*l.batch, l.c_gpu, 1, l.temp_gpu, 1); + activate_array_gpu(l.temp_gpu, l.outputs*l.batch, TANH); + + copy_gpu(l.outputs*l.batch, l.temp3_gpu, 1, l.temp2_gpu, 1); + mul_gpu(l.outputs*l.batch, l.o_gpu, 1, l.temp2_gpu, 1); + + gradient_array_gpu(l.temp_gpu, l.outputs*l.batch, TANH, l.temp2_gpu); + axpy_gpu(l.outputs*l.batch, 1, l.dc_gpu, 1, l.temp2_gpu, 1); + + copy_gpu(l.outputs*l.batch, l.c_gpu, 1, l.temp_gpu, 1); + activate_array_gpu(l.temp_gpu, l.outputs*l.batch, TANH); + mul_gpu(l.outputs*l.batch, l.temp3_gpu, 1, l.temp_gpu, 1); + gradient_array_gpu(l.o_gpu, l.outputs*l.batch, LOGISTIC, l.temp_gpu); + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, wo.delta_gpu, 1); + s.input_gpu = l.prev_state_gpu; + s.delta_gpu = l.dh_gpu; + backward_connected_layer_gpu(wo, s); + + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, uo.delta_gpu, 1); + s.input_gpu = state.input_gpu; + s.delta_gpu = state.delta_gpu; + backward_connected_layer_gpu(uo, s); + + copy_gpu(l.outputs*l.batch, l.temp2_gpu, 1, l.temp_gpu, 1); + mul_gpu(l.outputs*l.batch, l.i_gpu, 1, l.temp_gpu, 1); + gradient_array_gpu(l.g_gpu, l.outputs*l.batch, TANH, l.temp_gpu); + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, wg.delta_gpu, 1); + s.input_gpu = l.prev_state_gpu; + s.delta_gpu = l.dh_gpu; + backward_connected_layer_gpu(wg, s); + + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, ug.delta_gpu, 1); + s.input_gpu = state.input_gpu; + s.delta_gpu = state.delta_gpu; + backward_connected_layer_gpu(ug, s); + + copy_gpu(l.outputs*l.batch, l.temp2_gpu, 1, l.temp_gpu, 1); + mul_gpu(l.outputs*l.batch, l.g_gpu, 1, l.temp_gpu, 1); + gradient_array_gpu(l.i_gpu, l.outputs*l.batch, LOGISTIC, l.temp_gpu); + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, wi.delta_gpu, 1); + s.input_gpu = l.prev_state_gpu; + s.delta_gpu = l.dh_gpu; + backward_connected_layer_gpu(wi, s); + + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, ui.delta_gpu, 1); + s.input_gpu = state.input_gpu; + s.delta_gpu = state.delta_gpu; + backward_connected_layer_gpu(ui, s); + + copy_gpu(l.outputs*l.batch, l.temp2_gpu, 1, l.temp_gpu, 1); + mul_gpu(l.outputs*l.batch, l.prev_cell_gpu, 1, l.temp_gpu, 1); + gradient_array_gpu(l.f_gpu, l.outputs*l.batch, LOGISTIC, l.temp_gpu); + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, wf.delta_gpu, 1); + s.input_gpu = l.prev_state_gpu; + s.delta_gpu = l.dh_gpu; + backward_connected_layer_gpu(wf, s); + + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, uf.delta_gpu, 1); + s.input_gpu = state.input_gpu; + s.delta_gpu = state.delta_gpu; + backward_connected_layer_gpu(uf, s); + + copy_gpu(l.outputs*l.batch, l.temp2_gpu, 1, l.temp_gpu, 1); + mul_gpu(l.outputs*l.batch, l.f_gpu, 1, l.temp_gpu, 1); + copy_gpu(l.outputs*l.batch, l.temp_gpu, 1, l.dc_gpu, 1); + + state.input_gpu -= l.inputs*l.batch; + if (state.delta_gpu) state.delta_gpu -= l.inputs*l.batch; + l.output_gpu -= l.outputs*l.batch; + l.cell_gpu -= l.outputs*l.batch; + l.delta_gpu -= l.outputs*l.batch; + + increment_layer(&wf, -1); + increment_layer(&wi, -1); + increment_layer(&wg, -1); + increment_layer(&wo, -1); + + increment_layer(&uf, -1); + increment_layer(&ui, -1); + increment_layer(&ug, -1); + increment_layer(&uo, -1); + } +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/lstm_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/lstm_layer.h" new file mode 100644 index 00000000..b9f07e64 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/lstm_layer.h" @@ -0,0 +1,20 @@ +#ifndef LSTM_LAYER_H +#define LSTM_LAYER_H + +#include "activations.h" +#include "layer.h" +#include "network.h" +#define USET + +layer make_lstm_layer(int batch, int inputs, int outputs, int steps, int batch_normalize, int adam); + +void forward_lstm_layer(layer l, network net); +void update_lstm_layer(layer l, update_args a); + +#ifdef GPU +void forward_lstm_layer_gpu(layer l, network net); +void backward_lstm_layer_gpu(layer l, network net); +void update_lstm_layer_gpu(layer l, update_args a); + +#endif +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/matrix.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/matrix.c" new file mode 100644 index 00000000..799916bf --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/matrix.c" @@ -0,0 +1,196 @@ +#include "matrix.h" +#include "utils.h" +#include "blas.h" +#include +#include +#include +#include +#include + +void free_matrix(matrix m) +{ + int i; + for(i = 0; i < m.rows; ++i) free(m.vals[i]); + free(m.vals); +} + +float matrix_topk_accuracy(matrix truth, matrix guess, int k) +{ + int *indexes = calloc(k, sizeof(int)); + int n = truth.cols; + int i,j; + int correct = 0; + for(i = 0; i < truth.rows; ++i){ + top_k(guess.vals[i], n, k, indexes); + for(j = 0; j < k; ++j){ + int class = indexes[j]; + if(truth.vals[i][class]){ + ++correct; + break; + } + } + } + free(indexes); + return (float)correct/truth.rows; +} + +void scale_matrix(matrix m, float scale) +{ + int i,j; + for(i = 0; i < m.rows; ++i){ + for(j = 0; j < m.cols; ++j){ + m.vals[i][j] *= scale; + } + } +} + +matrix resize_matrix(matrix m, int size) +{ + int i; + if (m.rows == size) return m; + if (m.rows < size) { + m.vals = realloc(m.vals, size*sizeof(float*)); + for (i = m.rows; i < size; ++i) { + m.vals[i] = calloc(m.cols, sizeof(float)); + } + } else if (m.rows > size) { + for (i = size; i < m.rows; ++i) { + free(m.vals[i]); + } + m.vals = realloc(m.vals, size*sizeof(float*)); + } + m.rows = size; + return m; +} + +void matrix_add_matrix(matrix from, matrix to) +{ + assert(from.rows == to.rows && from.cols == to.cols); + int i,j; + for(i = 0; i < from.rows; ++i){ + for(j = 0; j < from.cols; ++j){ + to.vals[i][j] += from.vals[i][j]; + } + } +} + +matrix copy_matrix(matrix m) +{ + matrix c = {0}; + c.rows = m.rows; + c.cols = m.cols; + c.vals = calloc(c.rows, sizeof(float *)); + int i; + for(i = 0; i < c.rows; ++i){ + c.vals[i] = calloc(c.cols, sizeof(float)); + copy_cpu(c.cols, m.vals[i], 1, c.vals[i], 1); + } + return c; +} + +matrix make_matrix(int rows, int cols) +{ + int i; + matrix m; + m.rows = rows; + m.cols = cols; + m.vals = calloc(m.rows, sizeof(float *)); + for(i = 0; i < m.rows; ++i){ + m.vals[i] = calloc(m.cols, sizeof(float)); + } + return m; +} + +matrix hold_out_matrix(matrix *m, int n) +{ + int i; + matrix h; + h.rows = n; + h.cols = m->cols; + h.vals = calloc(h.rows, sizeof(float *)); + for(i = 0; i < n; ++i){ + int index = rand()%m->rows; + h.vals[i] = m->vals[index]; + m->vals[index] = m->vals[--(m->rows)]; + } + return h; +} + +float *pop_column(matrix *m, int c) +{ + float *col = calloc(m->rows, sizeof(float)); + int i, j; + for(i = 0; i < m->rows; ++i){ + col[i] = m->vals[i][c]; + for(j = c; j < m->cols-1; ++j){ + m->vals[i][j] = m->vals[i][j+1]; + } + } + --m->cols; + return col; +} + +matrix csv_to_matrix(char *filename) +{ + FILE *fp = fopen(filename, "r"); + if(!fp) file_error(filename); + + matrix m; + m.cols = -1; + + char *line; + + int n = 0; + int size = 1024; + m.vals = calloc(size, sizeof(float*)); + while((line = fgetl(fp))){ + if(m.cols == -1) m.cols = count_fields(line); + if(n == size){ + size *= 2; + m.vals = realloc(m.vals, size*sizeof(float*)); + } + m.vals[n] = parse_fields(line, m.cols); + free(line); + ++n; + } + m.vals = realloc(m.vals, n*sizeof(float*)); + m.rows = n; + return m; +} + +void matrix_to_csv(matrix m) +{ + int i, j; + + for(i = 0; i < m.rows; ++i){ + for(j = 0; j < m.cols; ++j){ + if(j > 0) printf(","); + printf("%.17g", m.vals[i][j]); + } + printf("\n"); + } +} + +void print_matrix(matrix m) +{ + int i, j; + printf("%d X %d Matrix:\n",m.rows, m.cols); + printf(" __"); + for(j = 0; j < 16*m.cols-1; ++j) printf(" "); + printf("__ \n"); + + printf("| "); + for(j = 0; j < 16*m.cols-1; ++j) printf(" "); + printf(" |\n"); + + for(i = 0; i < m.rows; ++i){ + printf("| "); + for(j = 0; j < m.cols; ++j){ + printf("%15.7f ", m.vals[i][j]); + } + printf(" |\n"); + } + printf("|__"); + for(j = 0; j < 16*m.cols-1; ++j) printf(" "); + printf("__|\n"); +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/matrix.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/matrix.h" new file mode 100644 index 00000000..879acd70 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/matrix.h" @@ -0,0 +1,13 @@ +#ifndef MATRIX_H +#define MATRIX_H +#include "darknet.h" + +matrix copy_matrix(matrix m); +void print_matrix(matrix m); + +matrix hold_out_matrix(matrix *m, int n); +matrix resize_matrix(matrix m, int size); + +float *pop_column(matrix *m, int c); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer.c" new file mode 100644 index 00000000..fb05635e --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer.c" @@ -0,0 +1,127 @@ +#include "maxpool_layer.h" +#include "cuda.h" +#include + +image get_maxpool_image(maxpool_layer l) +{ + int h = l.out_h; + int w = l.out_w; + int c = l.c; + return float_to_image(w,h,c,l.output); +} + +image get_maxpool_delta(maxpool_layer l) +{ + int h = l.out_h; + int w = l.out_w; + int c = l.c; + return float_to_image(w,h,c,l.delta); +} + +maxpool_layer make_maxpool_layer(int batch, int h, int w, int c, int size, int stride, int padding) +{ + maxpool_layer l = {0}; + l.type = MAXPOOL; + l.batch = batch; + l.h = h; + l.w = w; + l.c = c; + l.pad = padding; + l.out_w = (w + padding - size)/stride + 1; + l.out_h = (h + padding - size)/stride + 1; + l.out_c = c; + l.outputs = l.out_h * l.out_w * l.out_c; + l.inputs = h*w*c; + l.size = size; + l.stride = stride; + int output_size = l.out_h * l.out_w * l.out_c * batch; + l.indexes = calloc(output_size, sizeof(int)); + l.output = calloc(output_size, sizeof(float)); + l.delta = calloc(output_size, sizeof(float)); + l.forward = forward_maxpool_layer; + l.backward = backward_maxpool_layer; + #ifdef GPU + l.forward_gpu = forward_maxpool_layer_gpu; + l.backward_gpu = backward_maxpool_layer_gpu; + l.indexes_gpu = cuda_make_int_array(0, output_size); + l.output_gpu = cuda_make_array(l.output, output_size); + l.delta_gpu = cuda_make_array(l.delta, output_size); + #endif + fprintf(stderr, "max %d x %d / %d %4d x%4d x%4d -> %4d x%4d x%4d\n", size, size, stride, w, h, c, l.out_w, l.out_h, l.out_c); + return l; +} + +void resize_maxpool_layer(maxpool_layer *l, int w, int h) +{ + l->h = h; + l->w = w; + l->inputs = h*w*l->c; + + l->out_w = (w + l->pad - l->size)/l->stride + 1; + l->out_h = (h + l->pad - l->size)/l->stride + 1; + l->outputs = l->out_w * l->out_h * l->c; + int output_size = l->outputs * l->batch; + + l->indexes = realloc(l->indexes, output_size * sizeof(int)); + l->output = realloc(l->output, output_size * sizeof(float)); + l->delta = realloc(l->delta, output_size * sizeof(float)); + + #ifdef GPU + cuda_free((float *)l->indexes_gpu); + cuda_free(l->output_gpu); + cuda_free(l->delta_gpu); + l->indexes_gpu = cuda_make_int_array(0, output_size); + l->output_gpu = cuda_make_array(l->output, output_size); + l->delta_gpu = cuda_make_array(l->delta, output_size); + #endif +} + +void forward_maxpool_layer(const maxpool_layer l, network net) +{ + int b,i,j,k,m,n; + int w_offset = -l.pad/2; + int h_offset = -l.pad/2; + + int h = l.out_h; + int w = l.out_w; + int c = l.c; + + for(b = 0; b < l.batch; ++b){ + for(k = 0; k < c; ++k){ + for(i = 0; i < h; ++i){ + for(j = 0; j < w; ++j){ + int out_index = j + w*(i + h*(k + c*b)); + float max = -FLT_MAX; + int max_i = -1; + for(n = 0; n < l.size; ++n){ + for(m = 0; m < l.size; ++m){ + int cur_h = h_offset + i*l.stride + n; + int cur_w = w_offset + j*l.stride + m; + int index = cur_w + l.w*(cur_h + l.h*(k + b*l.c)); + int valid = (cur_h >= 0 && cur_h < l.h && + cur_w >= 0 && cur_w < l.w); + float val = (valid != 0) ? net.input[index] : -FLT_MAX; + max_i = (val > max) ? index : max_i; + max = (val > max) ? val : max; + } + } + l.output[out_index] = max; + l.indexes[out_index] = max_i; + } + } + } + } +} + +void backward_maxpool_layer(const maxpool_layer l, network net) +{ + int i; + int h = l.out_h; + int w = l.out_w; + int c = l.c; + for(i = 0; i < h*w*c*l.batch; ++i){ + int index = l.indexes[i]; + net.delta[index] += l.delta[i]; + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer.h" new file mode 100644 index 00000000..ceb51907 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer.h" @@ -0,0 +1,23 @@ +#ifndef MAXPOOL_LAYER_H +#define MAXPOOL_LAYER_H + +#include "image.h" +#include "cuda.h" +#include "layer.h" +#include "network.h" + +typedef layer maxpool_layer; + +image get_maxpool_image(maxpool_layer l); +maxpool_layer make_maxpool_layer(int batch, int h, int w, int c, int size, int stride, int padding); +void resize_maxpool_layer(maxpool_layer *l, int w, int h); +void forward_maxpool_layer(const maxpool_layer l, network net); +void backward_maxpool_layer(const maxpool_layer l, network net); + +#ifdef GPU +void forward_maxpool_layer_gpu(maxpool_layer l, network net); +void backward_maxpool_layer_gpu(maxpool_layer l, network net); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer_kernels.cu" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer_kernels.cu" new file mode 100644 index 00000000..869ef466 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/maxpool_layer_kernels.cu" @@ -0,0 +1,106 @@ +#include "cuda_runtime.h" +#include "curand.h" +#include "cublas_v2.h" + +extern "C" { +#include "maxpool_layer.h" +#include "cuda.h" +} + +__global__ void forward_maxpool_layer_kernel(int n, int in_h, int in_w, int in_c, int stride, int size, int pad, float *input, float *output, int *indexes) +{ + int h = (in_h + pad - size)/stride + 1; + int w = (in_w + pad - size)/stride + 1; + int c = in_c; + + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= n) return; + + int j = id % w; + id /= w; + int i = id % h; + id /= h; + int k = id % c; + id /= c; + int b = id; + + int w_offset = -pad/2; + int h_offset = -pad/2; + + int out_index = j + w*(i + h*(k + c*b)); + float max = -INFINITY; + int max_i = -1; + int l, m; + for(l = 0; l < size; ++l){ + for(m = 0; m < size; ++m){ + int cur_h = h_offset + i*stride + l; + int cur_w = w_offset + j*stride + m; + int index = cur_w + in_w*(cur_h + in_h*(k + b*in_c)); + int valid = (cur_h >= 0 && cur_h < in_h && + cur_w >= 0 && cur_w < in_w); + float val = (valid != 0) ? input[index] : -INFINITY; + max_i = (val > max) ? index : max_i; + max = (val > max) ? val : max; + } + } + output[out_index] = max; + indexes[out_index] = max_i; +} + +__global__ void backward_maxpool_layer_kernel(int n, int in_h, int in_w, int in_c, int stride, int size, int pad, float *delta, float *prev_delta, int *indexes) +{ + int h = (in_h + pad - size)/stride + 1; + int w = (in_w + pad - size)/stride + 1; + int c = in_c; + int area = (size-1)/stride; + + int id = (blockIdx.x + blockIdx.y*gridDim.x) * blockDim.x + threadIdx.x; + if(id >= n) return; + + int index = id; + int j = id % in_w; + id /= in_w; + int i = id % in_h; + id /= in_h; + int k = id % in_c; + id /= in_c; + int b = id; + + int w_offset = -pad/2; + int h_offset = -pad/2; + + float d = 0; + int l, m; + for(l = -area; l < area+1; ++l){ + for(m = -area; m < area+1; ++m){ + int out_w = (j-w_offset)/stride + m; + int out_h = (i-h_offset)/stride + l; + int out_index = out_w + w*(out_h + h*(k + c*b)); + int valid = (out_w >= 0 && out_w < w && + out_h >= 0 && out_h < h); + d += (valid && indexes[out_index] == index) ? delta[out_index] : 0; + } + } + prev_delta[index] += d; +} + +extern "C" void forward_maxpool_layer_gpu(maxpool_layer layer, network net) +{ + int h = layer.out_h; + int w = layer.out_w; + int c = layer.c; + + size_t n = h*w*c*layer.batch; + + forward_maxpool_layer_kernel<<>>(n, layer.h, layer.w, layer.c, layer.stride, layer.size, layer.pad, net.input_gpu, layer.output_gpu, layer.indexes_gpu); + check_error(cudaPeekAtLastError()); +} + +extern "C" void backward_maxpool_layer_gpu(maxpool_layer layer, network net) +{ + size_t n = layer.h*layer.w*layer.c*layer.batch; + + backward_maxpool_layer_kernel<<>>(n, layer.h, layer.w, layer.c, layer.stride, layer.size, layer.pad, layer.delta_gpu, net.delta_gpu, layer.indexes_gpu); + check_error(cudaPeekAtLastError()); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/network.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/network.c" new file mode 100644 index 00000000..aaab7997 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/network.c" @@ -0,0 +1,1129 @@ +#include +#include +#include +#include "network.h" +#include "image.h" +#include "data.h" +#include "utils.h" +#include "blas.h" + +#include "crop_layer.h" +#include "connected_layer.h" +#include "gru_layer.h" +#include "rnn_layer.h" +#include "crnn_layer.h" +#include "local_layer.h" +#include "convolutional_layer.h" +#include "activation_layer.h" +#include "detection_layer.h" +#include "region_layer.h" +#include "yolo_layer.h" +#include "normalization_layer.h" +#include "batchnorm_layer.h" +#include "maxpool_layer.h" +#include "reorg_layer.h" +#include "avgpool_layer.h" +#include "cost_layer.h" +#include "softmax_layer.h" +#include "dropout_layer.h" +#include "route_layer.h" +#include "upsample_layer.h" +#include "shortcut_layer.h" +#include "parser.h" +#include "data.h" + +load_args get_base_args(network *net) +{ + load_args args = {0}; + args.w = net->w; + args.h = net->h; + args.size = net->w; + + args.min = net->min_crop; + args.max = net->max_crop; + args.angle = net->angle; + args.aspect = net->aspect; + args.exposure = net->exposure; + args.center = net->center; + args.saturation = net->saturation; + args.hue = net->hue; + return args; +} + +network *load_network(char *cfg, char *weights, int clear) +{ + network *net = parse_network_cfg(cfg); + if(weights && weights[0] != 0){ + load_weights(net, weights); + } + if(clear) (*net->seen) = 0; + return net; +} + +size_t get_current_batch(network *net) +{ + size_t batch_num = (*net->seen)/(net->batch*net->subdivisions); + return batch_num; +} + +void reset_network_state(network *net, int b) +{ + int i; + for (i = 0; i < net->n; ++i) { + #ifdef GPU + layer l = net->layers[i]; + if(l.state_gpu){ + fill_gpu(l.outputs, 0, l.state_gpu + l.outputs*b, 1); + } + if(l.h_gpu){ + fill_gpu(l.outputs, 0, l.h_gpu + l.outputs*b, 1); + } + #endif + } +} + +void reset_rnn(network *net) +{ + reset_network_state(net, 0); +} + +float get_current_rate(network *net) +{ + size_t batch_num = get_current_batch(net); + int i; + float rate; + if (batch_num < net->burn_in) return net->learning_rate * pow((float)batch_num / net->burn_in, net->power); + switch (net->policy) { + case CONSTANT: + return net->learning_rate; + case STEP: + return net->learning_rate * pow(net->scale, batch_num/net->step); + case STEPS: + rate = net->learning_rate; + for(i = 0; i < net->num_steps; ++i){ + if(net->steps[i] > batch_num) return rate; + rate *= net->scales[i]; + } + return rate; + case EXP: + return net->learning_rate * pow(net->gamma, batch_num); + case POLY: + return net->learning_rate * pow(1 - (float)batch_num / net->max_batches, net->power); + case RANDOM: + return net->learning_rate * pow(rand_uniform(0,1), net->power); + case SIG: + return net->learning_rate * (1./(1.+exp(net->gamma*(batch_num - net->step)))); + default: + fprintf(stderr, "Policy is weird!\n"); + return net->learning_rate; + } +} + +char *get_layer_string(LAYER_TYPE a) +{ + switch(a){ + case CONVOLUTIONAL: + return "convolutional"; + case ACTIVE: + return "activation"; + case LOCAL: + return "local"; + case DECONVOLUTIONAL: + return "deconvolutional"; + case CONNECTED: + return "connected"; + case RNN: + return "rnn"; + case GRU: + return "gru"; + case LSTM: + return "lstm"; + case CRNN: + return "crnn"; + case MAXPOOL: + return "maxpool"; + case REORG: + return "reorg"; + case AVGPOOL: + return "avgpool"; + case SOFTMAX: + return "softmax"; + case DETECTION: + return "detection"; + case REGION: + return "region"; + case YOLO: + return "yolo"; + case DROPOUT: + return "dropout"; + case CROP: + return "crop"; + case COST: + return "cost"; + case ROUTE: + return "route"; + case SHORTCUT: + return "shortcut"; + case NORMALIZATION: + return "normalization"; + case BATCHNORM: + return "batchnorm"; + default: + break; + } + return "none"; +} + +network *make_network(int n) +{ + network *net = calloc(1, sizeof(network)); + net->n = n; + net->layers = calloc(net->n, sizeof(layer)); + net->seen = calloc(1, sizeof(size_t)); + net->t = calloc(1, sizeof(int)); + net->cost = calloc(1, sizeof(float)); + return net; +} + +void forward_network(network *netp) +{ +#ifdef GPU + if(netp->gpu_index >= 0){ + forward_network_gpu(netp); + return; + } +#endif + network net = *netp; + int i; + for(i = 0; i < net.n; ++i){ + net.index = i; + layer l = net.layers[i]; + if(l.delta){ + fill_cpu(l.outputs * l.batch, 0, l.delta, 1); + } + l.forward(l, net); + net.input = l.output; + if(l.truth) { + net.truth = l.output; + } + } + calc_network_cost(netp); +} + +void update_network(network *netp) +{ +#ifdef GPU + if(netp->gpu_index >= 0){ + update_network_gpu(netp); + return; + } +#endif + network net = *netp; + int i; + update_args a = {0}; + a.batch = net.batch*net.subdivisions; + a.learning_rate = get_current_rate(netp); + a.momentum = net.momentum; + a.decay = net.decay; + a.adam = net.adam; + a.B1 = net.B1; + a.B2 = net.B2; + a.eps = net.eps; + ++*net.t; + a.t = *net.t; + + for(i = 0; i < net.n; ++i){ + layer l = net.layers[i]; + if(l.update){ + l.update(l, a); + } + } +} + +void calc_network_cost(network *netp) +{ + network net = *netp; + int i; + float sum = 0; + int count = 0; + for(i = 0; i < net.n; ++i){ + if(net.layers[i].cost){ + sum += net.layers[i].cost[0]; + ++count; + } + } + *net.cost = sum/count; +} + +int get_predicted_class_network(network *net) +{ + return max_index(net->output, net->outputs); +} + +void backward_network(network *netp) +{ +#ifdef GPU + if(netp->gpu_index >= 0){ + backward_network_gpu(netp); + return; + } +#endif + network net = *netp; + int i; + network orig = net; + for(i = net.n-1; i >= 0; --i){ + layer l = net.layers[i]; + if(l.stopbackward) break; + if(i == 0){ + net = orig; + }else{ + layer prev = net.layers[i-1]; + net.input = prev.output; + net.delta = prev.delta; + } + net.index = i; + l.backward(l, net); + } +} + +float train_network_datum(network *net) +{ + *net->seen += net->batch; + net->train = 1; + forward_network(net); + backward_network(net); + float error = *net->cost; + if(((*net->seen)/net->batch)%net->subdivisions == 0) update_network(net); + return error; +} + +float train_network_sgd(network *net, data d, int n) +{ + int batch = net->batch; + + int i; + float sum = 0; + for(i = 0; i < n; ++i){ + get_random_batch(d, batch, net->input, net->truth); + float err = train_network_datum(net); + sum += err; + } + return (float)sum/(n*batch); +} + +float train_network(network *net, data d) +{ + assert(d.X.rows % net->batch == 0); + int batch = net->batch; + int n = d.X.rows / batch; + + int i; + float sum = 0; + for(i = 0; i < n; ++i){ + get_next_batch(d, batch, i*batch, net->input, net->truth); + float err = train_network_datum(net); + sum += err; + } + return (float)sum/(n*batch); +} + +void set_temp_network(network *net, float t) +{ + int i; + for(i = 0; i < net->n; ++i){ + net->layers[i].temperature = t; + } +} + + +void set_batch_network(network *net, int b) +{ + net->batch = b; + int i; + for(i = 0; i < net->n; ++i){ + net->layers[i].batch = b; +#ifdef CUDNN + if(net->layers[i].type == CONVOLUTIONAL){ + cudnn_convolutional_setup(net->layers + i); + } + if(net->layers[i].type == DECONVOLUTIONAL){ + layer *l = net->layers + i; + cudnnSetTensor4dDescriptor(l->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l->out_c, l->out_h, l->out_w); + cudnnSetTensor4dDescriptor(l->normTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, 1, l->out_c, 1, 1); + } +#endif + } +} + +int resize_network(network *net, int w, int h) +{ +#ifdef GPU + cuda_set_device(net->gpu_index); + cuda_free(net->workspace); +#endif + int i; + //if(w == net->w && h == net->h) return 0; + net->w = w; + net->h = h; + int inputs = 0; + size_t workspace_size = 0; + //fprintf(stderr, "Resizing to %d x %d...\n", w, h); + //fflush(stderr); + for (i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == CONVOLUTIONAL){ + resize_convolutional_layer(&l, w, h); + }else if(l.type == CROP){ + resize_crop_layer(&l, w, h); + }else if(l.type == MAXPOOL){ + resize_maxpool_layer(&l, w, h); + }else if(l.type == REGION){ + resize_region_layer(&l, w, h); + }else if(l.type == YOLO){ + resize_yolo_layer(&l, w, h); + }else if(l.type == ROUTE){ + resize_route_layer(&l, net); + }else if(l.type == SHORTCUT){ + resize_shortcut_layer(&l, w, h); + }else if(l.type == UPSAMPLE){ + resize_upsample_layer(&l, w, h); + }else if(l.type == REORG){ + resize_reorg_layer(&l, w, h); + }else if(l.type == AVGPOOL){ + resize_avgpool_layer(&l, w, h); + }else if(l.type == NORMALIZATION){ + resize_normalization_layer(&l, w, h); + }else if(l.type == COST){ + resize_cost_layer(&l, inputs); + }else{ + error("Cannot resize this type of layer"); + } + if(l.workspace_size > workspace_size) workspace_size = l.workspace_size; + if(l.workspace_size > 2000000000) assert(0); + inputs = l.outputs; + net->layers[i] = l; + w = l.out_w; + h = l.out_h; + if(l.type == AVGPOOL) break; + } + layer out = get_network_output_layer(net); + net->inputs = net->layers[0].inputs; + net->outputs = out.outputs; + net->truths = out.outputs; + if(net->layers[net->n-1].truths) net->truths = net->layers[net->n-1].truths; + net->output = out.output; + free(net->input); + free(net->truth); + net->input = calloc(net->inputs*net->batch, sizeof(float)); + net->truth = calloc(net->truths*net->batch, sizeof(float)); +#ifdef GPU + if(gpu_index >= 0){ + cuda_free(net->input_gpu); + cuda_free(net->truth_gpu); + net->input_gpu = cuda_make_array(net->input, net->inputs*net->batch); + net->truth_gpu = cuda_make_array(net->truth, net->truths*net->batch); + if(workspace_size){ + net->workspace = cuda_make_array(0, (workspace_size-1)/sizeof(float)+1); + } + }else { + free(net->workspace); + net->workspace = calloc(1, workspace_size); + } +#else + free(net->workspace); + net->workspace = calloc(1, workspace_size); +#endif + //fprintf(stderr, " Done!\n"); + return 0; +} + +layer get_network_detection_layer(network *net) +{ + int i; + for(i = 0; i < net->n; ++i){ + if(net->layers[i].type == DETECTION){ + return net->layers[i]; + } + } + fprintf(stderr, "Detection layer not found!!\n"); + layer l = {0}; + return l; +} + +image get_network_image_layer(network *net, int i) +{ + layer l = net->layers[i]; +#ifdef GPU + //cuda_pull_array(l.output_gpu, l.output, l.outputs); +#endif + if (l.out_w && l.out_h && l.out_c){ + return float_to_image(l.out_w, l.out_h, l.out_c, l.output); + } + image def = {0}; + return def; +} + +image get_network_image(network *net) +{ + int i; + for(i = net->n-1; i >= 0; --i){ + image m = get_network_image_layer(net, i); + if(m.h != 0) return m; + } + image def = {0}; + return def; +} + +void visualize_network(network *net) +{ + image *prev = 0; + int i; + char buff[256]; + for(i = 0; i < net->n; ++i){ + sprintf(buff, "Layer %d", i); + layer l = net->layers[i]; + if(l.type == CONVOLUTIONAL){ + prev = visualize_convolutional_layer(l, buff, prev); + } + } +} + +void top_predictions(network *net, int k, int *index) +{ + top_k(net->output, net->outputs, k, index); +} + + +float *network_predict(network *net, float *input) +{ + network orig = *net; + net->input = input; + net->truth = 0; + net->train = 0; + net->delta = 0; + forward_network(net); + float *out = net->output; + *net = orig; + return out; +} + +int num_detections(network *net, float thresh) +{ + int i; + int s = 0; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + if(l.type == YOLO){ + s += yolo_num_detections(l, thresh); + } + if(l.type == DETECTION || l.type == REGION){ + s += l.w*l.h*l.n; + } + } + return s; +} + +detection *make_network_boxes(network *net, float thresh, int *num) +{ + layer l = net->layers[net->n - 1]; + int i; + int nboxes = num_detections(net, thresh); + if(num) *num = nboxes; + detection *dets = calloc(nboxes, sizeof(detection)); + for(i = 0; i < nboxes; ++i){ + dets[i].prob = calloc(l.classes, sizeof(float)); + if(l.coords > 4){ + dets[i].mask = calloc(l.coords-4, sizeof(float)); + } + } + return dets; +} + +void fill_network_boxes(network *net, int w, int h, float thresh, float hier, int *map, int relative, detection *dets) +{ + int j; + for(j = 0; j < net->n; ++j){ + layer l = net->layers[j]; + if(l.type == YOLO){ + int count = get_yolo_detections(l, w, h, net->w, net->h, thresh, map, relative, dets); + dets += count; + } + if(l.type == REGION){ + get_region_detections(l, w, h, net->w, net->h, thresh, map, hier, relative, dets); + dets += l.w*l.h*l.n; + } + if(l.type == DETECTION){ + get_detection_detections(l, w, h, thresh, dets); + dets += l.w*l.h*l.n; + } + } +} + +detection *get_network_boxes(network *net, int w, int h, float thresh, float hier, int *map, int relative, int *num) +{ + detection *dets = make_network_boxes(net, thresh, num); + fill_network_boxes(net, w, h, thresh, hier, map, relative, dets); + return dets; +} + +void free_detections(detection *dets, int n) +{ + int i; + for(i = 0; i < n; ++i){ + free(dets[i].prob); + if(dets[i].mask) free(dets[i].mask); + } + free(dets); +} + +float *network_predict_image(network *net, image im) +{ + image imr = letterbox_image(im, net->w, net->h); + set_batch_network(net, 1); + float *p = network_predict(net, imr.data); + free_image(imr); + return p; +} + +int network_width(network *net){return net->w;} +int network_height(network *net){return net->h;} + +matrix network_predict_data_multi(network *net, data test, int n) +{ + int i,j,b,m; + int k = net->outputs; + matrix pred = make_matrix(test.X.rows, k); + float *X = calloc(net->batch*test.X.rows, sizeof(float)); + for(i = 0; i < test.X.rows; i += net->batch){ + for(b = 0; b < net->batch; ++b){ + if(i+b == test.X.rows) break; + memcpy(X+b*test.X.cols, test.X.vals[i+b], test.X.cols*sizeof(float)); + } + for(m = 0; m < n; ++m){ + float *out = network_predict(net, X); + for(b = 0; b < net->batch; ++b){ + if(i+b == test.X.rows) break; + for(j = 0; j < k; ++j){ + pred.vals[i+b][j] += out[j+b*k]/n; + } + } + } + } + free(X); + return pred; +} + +matrix network_predict_data(network *net, data test) +{ + int i,j,b; + int k = net->outputs; + matrix pred = make_matrix(test.X.rows, k); + float *X = calloc(net->batch*test.X.cols, sizeof(float)); + for(i = 0; i < test.X.rows; i += net->batch){ + for(b = 0; b < net->batch; ++b){ + if(i+b == test.X.rows) break; + memcpy(X+b*test.X.cols, test.X.vals[i+b], test.X.cols*sizeof(float)); + } + float *out = network_predict(net, X); + for(b = 0; b < net->batch; ++b){ + if(i+b == test.X.rows) break; + for(j = 0; j < k; ++j){ + pred.vals[i+b][j] = out[j+b*k]; + } + } + } + free(X); + return pred; +} + +void print_network(network *net) +{ + int i,j; + for(i = 0; i < net->n; ++i){ + layer l = net->layers[i]; + float *output = l.output; + int n = l.outputs; + float mean = mean_array(output, n); + float vari = variance_array(output, n); + fprintf(stderr, "Layer %d - Mean: %f, Variance: %f\n",i,mean, vari); + if(n > 100) n = 100; + for(j = 0; j < n; ++j) fprintf(stderr, "%f, ", output[j]); + if(n == 100)fprintf(stderr,".....\n"); + fprintf(stderr, "\n"); + } +} + +void compare_networks(network *n1, network *n2, data test) +{ + matrix g1 = network_predict_data(n1, test); + matrix g2 = network_predict_data(n2, test); + int i; + int a,b,c,d; + a = b = c = d = 0; + for(i = 0; i < g1.rows; ++i){ + int truth = max_index(test.y.vals[i], test.y.cols); + int p1 = max_index(g1.vals[i], g1.cols); + int p2 = max_index(g2.vals[i], g2.cols); + if(p1 == truth){ + if(p2 == truth) ++d; + else ++c; + }else{ + if(p2 == truth) ++b; + else ++a; + } + } + printf("%5d %5d\n%5d %5d\n", a, b, c, d); + float num = pow((abs(b - c) - 1.), 2.); + float den = b + c; + printf("%f\n", num/den); +} + +float network_accuracy(network *net, data d) +{ + matrix guess = network_predict_data(net, d); + float acc = matrix_topk_accuracy(d.y, guess,1); + free_matrix(guess); + return acc; +} + +float *network_accuracies(network *net, data d, int n) +{ + static float acc[2]; + matrix guess = network_predict_data(net, d); + acc[0] = matrix_topk_accuracy(d.y, guess, 1); + acc[1] = matrix_topk_accuracy(d.y, guess, n); + free_matrix(guess); + return acc; +} + +layer get_network_output_layer(network *net) +{ + int i; + for(i = net->n - 1; i >= 0; --i){ + if(net->layers[i].type != COST) break; + } + return net->layers[i]; +} + +float network_accuracy_multi(network *net, data d, int n) +{ + matrix guess = network_predict_data_multi(net, d, n); + float acc = matrix_topk_accuracy(d.y, guess,1); + free_matrix(guess); + return acc; +} + +void free_network(network *net) +{ + int i; + for(i = 0; i < net->n; ++i){ + free_layer(net->layers[i]); + } + free(net->layers); + if(net->input) free(net->input); + if(net->truth) free(net->truth); +#ifdef GPU + if(net->input_gpu) cuda_free(net->input_gpu); + if(net->truth_gpu) cuda_free(net->truth_gpu); +#endif + free(net); +} + +// Some day... +// ^ What the hell is this comment for? + + +layer network_output_layer(network *net) +{ + int i; + for(i = net->n - 1; i >= 0; --i){ + if(net->layers[i].type != COST) break; + } + return net->layers[i]; +} + +int network_inputs(network *net) +{ + return net->layers[0].inputs; +} + +int network_outputs(network *net) +{ + return network_output_layer(net).outputs; +} + +float *network_output(network *net) +{ + return network_output_layer(net).output; +} + +#ifdef GPU + +void forward_network_gpu(network *netp) +{ + network net = *netp; + cuda_set_device(net.gpu_index); + cuda_push_array(net.input_gpu, net.input, net.inputs*net.batch); + if(net.truth){ + cuda_push_array(net.truth_gpu, net.truth, net.truths*net.batch); + } + + int i; + for(i = 0; i < net.n; ++i){ + net.index = i; + layer l = net.layers[i]; + if(l.delta_gpu){ + fill_gpu(l.outputs * l.batch, 0, l.delta_gpu, 1); + } + l.forward_gpu(l, net); + net.input_gpu = l.output_gpu; + net.input = l.output; + if(l.truth) { + net.truth_gpu = l.output_gpu; + net.truth = l.output; + } + } + pull_network_output(netp); + calc_network_cost(netp); +} + +void backward_network_gpu(network *netp) +{ + int i; + network net = *netp; + network orig = net; + cuda_set_device(net.gpu_index); + for(i = net.n-1; i >= 0; --i){ + layer l = net.layers[i]; + if(l.stopbackward) break; + if(i == 0){ + net = orig; + }else{ + layer prev = net.layers[i-1]; + net.input = prev.output; + net.delta = prev.delta; + net.input_gpu = prev.output_gpu; + net.delta_gpu = prev.delta_gpu; + } + net.index = i; + l.backward_gpu(l, net); + } +} + +void update_network_gpu(network *netp) +{ + network net = *netp; + cuda_set_device(net.gpu_index); + int i; + update_args a = {0}; + a.batch = net.batch*net.subdivisions; + a.learning_rate = get_current_rate(netp); + a.momentum = net.momentum; + a.decay = net.decay; + a.adam = net.adam; + a.B1 = net.B1; + a.B2 = net.B2; + a.eps = net.eps; + ++*net.t; + a.t = (*net.t); + + for(i = 0; i < net.n; ++i){ + layer l = net.layers[i]; + if(l.update_gpu){ + l.update_gpu(l, a); + } + } +} + +void harmless_update_network_gpu(network *netp) +{ + network net = *netp; + cuda_set_device(net.gpu_index); + int i; + for(i = 0; i < net.n; ++i){ + layer l = net.layers[i]; + if(l.weight_updates_gpu) fill_gpu(l.nweights, 0, l.weight_updates_gpu, 1); + if(l.bias_updates_gpu) fill_gpu(l.nbiases, 0, l.bias_updates_gpu, 1); + if(l.scale_updates_gpu) fill_gpu(l.nbiases, 0, l.scale_updates_gpu, 1); + } +} + +typedef struct { + network *net; + data d; + float *err; +} train_args; + +void *train_thread(void *ptr) +{ + train_args args = *(train_args*)ptr; + free(ptr); + cuda_set_device(args.net->gpu_index); + *args.err = train_network(args.net, args.d); + return 0; +} + +pthread_t train_network_in_thread(network *net, data d, float *err) +{ + pthread_t thread; + train_args *ptr = (train_args *)calloc(1, sizeof(train_args)); + ptr->net = net; + ptr->d = d; + ptr->err = err; + if(pthread_create(&thread, 0, train_thread, ptr)) error("Thread creation failed"); + return thread; +} + +void merge_weights(layer l, layer base) +{ + if (l.type == CONVOLUTIONAL) { + axpy_cpu(l.n, 1, l.bias_updates, 1, base.biases, 1); + axpy_cpu(l.nweights, 1, l.weight_updates, 1, base.weights, 1); + if (l.scales) { + axpy_cpu(l.n, 1, l.scale_updates, 1, base.scales, 1); + } + } else if(l.type == CONNECTED) { + axpy_cpu(l.outputs, 1, l.bias_updates, 1, base.biases, 1); + axpy_cpu(l.outputs*l.inputs, 1, l.weight_updates, 1, base.weights, 1); + } +} + +void scale_weights(layer l, float s) +{ + if (l.type == CONVOLUTIONAL) { + scal_cpu(l.n, s, l.biases, 1); + scal_cpu(l.nweights, s, l.weights, 1); + if (l.scales) { + scal_cpu(l.n, s, l.scales, 1); + } + } else if(l.type == CONNECTED) { + scal_cpu(l.outputs, s, l.biases, 1); + scal_cpu(l.outputs*l.inputs, s, l.weights, 1); + } +} + + +void pull_weights(layer l) +{ + if(l.type == CONVOLUTIONAL || l.type == DECONVOLUTIONAL){ + cuda_pull_array(l.biases_gpu, l.bias_updates, l.n); + cuda_pull_array(l.weights_gpu, l.weight_updates, l.nweights); + if(l.scales) cuda_pull_array(l.scales_gpu, l.scale_updates, l.n); + } else if(l.type == CONNECTED){ + cuda_pull_array(l.biases_gpu, l.bias_updates, l.outputs); + cuda_pull_array(l.weights_gpu, l.weight_updates, l.outputs*l.inputs); + } +} + +void push_weights(layer l) +{ + if(l.type == CONVOLUTIONAL || l.type == DECONVOLUTIONAL){ + cuda_push_array(l.biases_gpu, l.biases, l.n); + cuda_push_array(l.weights_gpu, l.weights, l.nweights); + if(l.scales) cuda_push_array(l.scales_gpu, l.scales, l.n); + } else if(l.type == CONNECTED){ + cuda_push_array(l.biases_gpu, l.biases, l.outputs); + cuda_push_array(l.weights_gpu, l.weights, l.outputs*l.inputs); + } +} + +void distribute_weights(layer l, layer base) +{ + if (l.type == CONVOLUTIONAL || l.type == DECONVOLUTIONAL) { + cuda_push_array(l.biases_gpu, base.biases, l.n); + cuda_push_array(l.weights_gpu, base.weights, l.nweights); + if (base.scales) cuda_push_array(l.scales_gpu, base.scales, l.n); + } else if (l.type == CONNECTED) { + cuda_push_array(l.biases_gpu, base.biases, l.outputs); + cuda_push_array(l.weights_gpu, base.weights, l.outputs*l.inputs); + } +} + + +/* + + void pull_updates(layer l) + { + if(l.type == CONVOLUTIONAL){ + cuda_pull_array(l.bias_updates_gpu, l.bias_updates, l.n); + cuda_pull_array(l.weight_updates_gpu, l.weight_updates, l.nweights); + if(l.scale_updates) cuda_pull_array(l.scale_updates_gpu, l.scale_updates, l.n); + } else if(l.type == CONNECTED){ + cuda_pull_array(l.bias_updates_gpu, l.bias_updates, l.outputs); + cuda_pull_array(l.weight_updates_gpu, l.weight_updates, l.outputs*l.inputs); + } + } + + void push_updates(layer l) + { + if(l.type == CONVOLUTIONAL){ + cuda_push_array(l.bias_updates_gpu, l.bias_updates, l.n); + cuda_push_array(l.weight_updates_gpu, l.weight_updates, l.nweights); + if(l.scale_updates) cuda_push_array(l.scale_updates_gpu, l.scale_updates, l.n); + } else if(l.type == CONNECTED){ + cuda_push_array(l.bias_updates_gpu, l.bias_updates, l.outputs); + cuda_push_array(l.weight_updates_gpu, l.weight_updates, l.outputs*l.inputs); + } + } + + void update_layer(layer l, network net) + { + int update_batch = net.batch*net.subdivisions; + float rate = get_current_rate(net); + l.t = get_current_batch(net); + if(l.update_gpu){ + l.update_gpu(l, update_batch, rate*l.learning_rate_scale, net.momentum, net.decay); + } + } + void merge_updates(layer l, layer base) + { + if (l.type == CONVOLUTIONAL) { + axpy_cpu(l.n, 1, l.bias_updates, 1, base.bias_updates, 1); + axpy_cpu(l.nweights, 1, l.weight_updates, 1, base.weight_updates, 1); + if (l.scale_updates) { + axpy_cpu(l.n, 1, l.scale_updates, 1, base.scale_updates, 1); + } + } else if(l.type == CONNECTED) { + axpy_cpu(l.outputs, 1, l.bias_updates, 1, base.bias_updates, 1); + axpy_cpu(l.outputs*l.inputs, 1, l.weight_updates, 1, base.weight_updates, 1); + } + } + + void distribute_updates(layer l, layer base) + { + if(l.type == CONVOLUTIONAL || l.type == DECONVOLUTIONAL){ + cuda_push_array(l.bias_updates_gpu, base.bias_updates, l.n); + cuda_push_array(l.weight_updates_gpu, base.weight_updates, l.nweights); + if(base.scale_updates) cuda_push_array(l.scale_updates_gpu, base.scale_updates, l.n); + } else if(l.type == CONNECTED){ + cuda_push_array(l.bias_updates_gpu, base.bias_updates, l.outputs); + cuda_push_array(l.weight_updates_gpu, base.weight_updates, l.outputs*l.inputs); + } + } + */ + +/* + void sync_layer(network *nets, int n, int j) + { + int i; + network net = nets[0]; + layer base = net.layers[j]; + scale_weights(base, 0); + for (i = 0; i < n; ++i) { + cuda_set_device(nets[i].gpu_index); + layer l = nets[i].layers[j]; + pull_weights(l); + merge_weights(l, base); + } + scale_weights(base, 1./n); + for (i = 0; i < n; ++i) { + cuda_set_device(nets[i].gpu_index); + layer l = nets[i].layers[j]; + distribute_weights(l, base); + } + } + */ + +void sync_layer(network **nets, int n, int j) +{ + int i; + network *net = nets[0]; + layer base = net->layers[j]; + scale_weights(base, 0); + for (i = 0; i < n; ++i) { + cuda_set_device(nets[i]->gpu_index); + layer l = nets[i]->layers[j]; + pull_weights(l); + merge_weights(l, base); + } + scale_weights(base, 1./n); + for (i = 0; i < n; ++i) { + cuda_set_device(nets[i]->gpu_index); + layer l = nets[i]->layers[j]; + distribute_weights(l, base); + } +} + +typedef struct{ + network **nets; + int n; + int j; +} sync_args; + +void *sync_layer_thread(void *ptr) +{ + sync_args args = *(sync_args*)ptr; + sync_layer(args.nets, args.n, args.j); + free(ptr); + return 0; +} + +pthread_t sync_layer_in_thread(network **nets, int n, int j) +{ + pthread_t thread; + sync_args *ptr = (sync_args *)calloc(1, sizeof(sync_args)); + ptr->nets = nets; + ptr->n = n; + ptr->j = j; + if(pthread_create(&thread, 0, sync_layer_thread, ptr)) error("Thread creation failed"); + return thread; +} + +void sync_nets(network **nets, int n, int interval) +{ + int j; + int layers = nets[0]->n; + pthread_t *threads = (pthread_t *) calloc(layers, sizeof(pthread_t)); + + *(nets[0]->seen) += interval * (n-1) * nets[0]->batch * nets[0]->subdivisions; + for (j = 0; j < n; ++j){ + *(nets[j]->seen) = *(nets[0]->seen); + } + for (j = 0; j < layers; ++j) { + threads[j] = sync_layer_in_thread(nets, n, j); + } + for (j = 0; j < layers; ++j) { + pthread_join(threads[j], 0); + } + free(threads); +} + +float train_networks(network **nets, int n, data d, int interval) +{ + int i; + int batch = nets[0]->batch; + int subdivisions = nets[0]->subdivisions; + assert(batch * subdivisions * n == d.X.rows); + pthread_t *threads = (pthread_t *) calloc(n, sizeof(pthread_t)); + float *errors = (float *) calloc(n, sizeof(float)); + + float sum = 0; + for(i = 0; i < n; ++i){ + data p = get_data_part(d, i, n); + threads[i] = train_network_in_thread(nets[i], p, errors + i); + } + for(i = 0; i < n; ++i){ + pthread_join(threads[i], 0); + //printf("%f\n", errors[i]); + sum += errors[i]; + } + //cudaDeviceSynchronize(); + if (get_current_batch(nets[0]) % interval == 0) { + printf("Syncing... "); + fflush(stdout); + sync_nets(nets, n, interval); + printf("Done!\n"); + } + //cudaDeviceSynchronize(); + free(threads); + free(errors); + return (float)sum/(n); +} + +void pull_network_output(network *net) +{ + layer l = get_network_output_layer(net); + cuda_pull_array(l.output_gpu, l.output, l.outputs*l.batch); +} + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/network.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/network.h" new file mode 100644 index 00000000..1b0dfd1a --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/network.h" @@ -0,0 +1,29 @@ +// Oh boy, why am I about to do this.... +#ifndef NETWORK_H +#define NETWORK_H +#include "darknet.h" + +#include "image.h" +#include "layer.h" +#include "data.h" +#include "tree.h" + + +#ifdef GPU +void pull_network_output(network *net); +#endif + +void compare_networks(network *n1, network *n2, data d); +char *get_layer_string(LAYER_TYPE a); + +network *make_network(int n); + + +float network_accuracy_multi(network *net, data d, int n); +int get_predicted_class_network(network *net); +void print_network(network *net); +int resize_network(network *net, int w, int h); +void calc_network_cost(network *net); + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/normalization_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/normalization_layer.c" new file mode 100644 index 00000000..424714fe --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/normalization_layer.c" @@ -0,0 +1,151 @@ +#include "normalization_layer.h" +#include "blas.h" + +#include + +layer make_normalization_layer(int batch, int w, int h, int c, int size, float alpha, float beta, float kappa) +{ + fprintf(stderr, "Local Response Normalization Layer: %d x %d x %d image, %d size\n", w,h,c,size); + layer layer = {0}; + layer.type = NORMALIZATION; + layer.batch = batch; + layer.h = layer.out_h = h; + layer.w = layer.out_w = w; + layer.c = layer.out_c = c; + layer.kappa = kappa; + layer.size = size; + layer.alpha = alpha; + layer.beta = beta; + layer.output = calloc(h * w * c * batch, sizeof(float)); + layer.delta = calloc(h * w * c * batch, sizeof(float)); + layer.squared = calloc(h * w * c * batch, sizeof(float)); + layer.norms = calloc(h * w * c * batch, sizeof(float)); + layer.inputs = w*h*c; + layer.outputs = layer.inputs; + + layer.forward = forward_normalization_layer; + layer.backward = backward_normalization_layer; + #ifdef GPU + layer.forward_gpu = forward_normalization_layer_gpu; + layer.backward_gpu = backward_normalization_layer_gpu; + + layer.output_gpu = cuda_make_array(layer.output, h * w * c * batch); + layer.delta_gpu = cuda_make_array(layer.delta, h * w * c * batch); + layer.squared_gpu = cuda_make_array(layer.squared, h * w * c * batch); + layer.norms_gpu = cuda_make_array(layer.norms, h * w * c * batch); + #endif + return layer; +} + +void resize_normalization_layer(layer *layer, int w, int h) +{ + int c = layer->c; + int batch = layer->batch; + layer->h = h; + layer->w = w; + layer->out_h = h; + layer->out_w = w; + layer->inputs = w*h*c; + layer->outputs = layer->inputs; + layer->output = realloc(layer->output, h * w * c * batch * sizeof(float)); + layer->delta = realloc(layer->delta, h * w * c * batch * sizeof(float)); + layer->squared = realloc(layer->squared, h * w * c * batch * sizeof(float)); + layer->norms = realloc(layer->norms, h * w * c * batch * sizeof(float)); +#ifdef GPU + cuda_free(layer->output_gpu); + cuda_free(layer->delta_gpu); + cuda_free(layer->squared_gpu); + cuda_free(layer->norms_gpu); + layer->output_gpu = cuda_make_array(layer->output, h * w * c * batch); + layer->delta_gpu = cuda_make_array(layer->delta, h * w * c * batch); + layer->squared_gpu = cuda_make_array(layer->squared, h * w * c * batch); + layer->norms_gpu = cuda_make_array(layer->norms, h * w * c * batch); +#endif +} + +void forward_normalization_layer(const layer layer, network net) +{ + int k,b; + int w = layer.w; + int h = layer.h; + int c = layer.c; + scal_cpu(w*h*c*layer.batch, 0, layer.squared, 1); + + for(b = 0; b < layer.batch; ++b){ + float *squared = layer.squared + w*h*c*b; + float *norms = layer.norms + w*h*c*b; + float *input = net.input + w*h*c*b; + pow_cpu(w*h*c, 2, input, 1, squared, 1); + + const_cpu(w*h, layer.kappa, norms, 1); + for(k = 0; k < layer.size/2; ++k){ + axpy_cpu(w*h, layer.alpha, squared + w*h*k, 1, norms, 1); + } + + for(k = 1; k < layer.c; ++k){ + copy_cpu(w*h, norms + w*h*(k-1), 1, norms + w*h*k, 1); + int prev = k - ((layer.size-1)/2) - 1; + int next = k + (layer.size/2); + if(prev >= 0) axpy_cpu(w*h, -layer.alpha, squared + w*h*prev, 1, norms + w*h*k, 1); + if(next < layer.c) axpy_cpu(w*h, layer.alpha, squared + w*h*next, 1, norms + w*h*k, 1); + } + } + pow_cpu(w*h*c*layer.batch, -layer.beta, layer.norms, 1, layer.output, 1); + mul_cpu(w*h*c*layer.batch, net.input, 1, layer.output, 1); +} + +void backward_normalization_layer(const layer layer, network net) +{ + // TODO This is approximate ;-) + // Also this should add in to delta instead of overwritting. + + int w = layer.w; + int h = layer.h; + int c = layer.c; + pow_cpu(w*h*c*layer.batch, -layer.beta, layer.norms, 1, net.delta, 1); + mul_cpu(w*h*c*layer.batch, layer.delta, 1, net.delta, 1); +} + +#ifdef GPU +void forward_normalization_layer_gpu(const layer layer, network net) +{ + int k,b; + int w = layer.w; + int h = layer.h; + int c = layer.c; + scal_gpu(w*h*c*layer.batch, 0, layer.squared_gpu, 1); + + for(b = 0; b < layer.batch; ++b){ + float *squared = layer.squared_gpu + w*h*c*b; + float *norms = layer.norms_gpu + w*h*c*b; + float *input = net.input_gpu + w*h*c*b; + pow_gpu(w*h*c, 2, input, 1, squared, 1); + + const_gpu(w*h, layer.kappa, norms, 1); + for(k = 0; k < layer.size/2; ++k){ + axpy_gpu(w*h, layer.alpha, squared + w*h*k, 1, norms, 1); + } + + for(k = 1; k < layer.c; ++k){ + copy_gpu(w*h, norms + w*h*(k-1), 1, norms + w*h*k, 1); + int prev = k - ((layer.size-1)/2) - 1; + int next = k + (layer.size/2); + if(prev >= 0) axpy_gpu(w*h, -layer.alpha, squared + w*h*prev, 1, norms + w*h*k, 1); + if(next < layer.c) axpy_gpu(w*h, layer.alpha, squared + w*h*next, 1, norms + w*h*k, 1); + } + } + pow_gpu(w*h*c*layer.batch, -layer.beta, layer.norms_gpu, 1, layer.output_gpu, 1); + mul_gpu(w*h*c*layer.batch, net.input_gpu, 1, layer.output_gpu, 1); +} + +void backward_normalization_layer_gpu(const layer layer, network net) +{ + // TODO This is approximate ;-) + + int w = layer.w; + int h = layer.h; + int c = layer.c; + pow_gpu(w*h*c*layer.batch, -layer.beta, layer.norms_gpu, 1, net.delta_gpu, 1); + mul_gpu(w*h*c*layer.batch, layer.delta_gpu, 1, net.delta_gpu, 1); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/normalization_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/normalization_layer.h" new file mode 100644 index 00000000..665baa50 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/normalization_layer.h" @@ -0,0 +1,19 @@ +#ifndef NORMALIZATION_LAYER_H +#define NORMALIZATION_LAYER_H + +#include "image.h" +#include "layer.h" +#include "network.h" + +layer make_normalization_layer(int batch, int w, int h, int c, int size, float alpha, float beta, float kappa); +void resize_normalization_layer(layer *layer, int h, int w); +void forward_normalization_layer(const layer layer, network net); +void backward_normalization_layer(const layer layer, network net); +void visualize_normalization_layer(layer layer, char *window); + +#ifdef GPU +void forward_normalization_layer_gpu(const layer layer, network net); +void backward_normalization_layer_gpu(const layer layer, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/option_list.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/option_list.c" new file mode 100644 index 00000000..2f52781f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/option_list.c" @@ -0,0 +1,140 @@ +#include +#include +#include +#include "option_list.h" +#include "utils.h" + +list *read_data_cfg(char *filename) +{ + FILE *file = fopen(filename, "r"); + if(file == 0) file_error(filename); + char *line; + int nu = 0; + list *options = make_list(); + while((line=fgetl(file)) != 0){ + ++ nu; + strip(line); + switch(line[0]){ + case '\0': + case '#': + case ';': + free(line); + break; + default: + if(!read_option(line, options)){ + fprintf(stderr, "Config file error line %d, could parse: %s\n", nu, line); + free(line); + } + break; + } + } + fclose(file); + return options; +} + +metadata get_metadata(char *file) +{ + metadata m = {0}; + list *options = read_data_cfg(file); + + char *name_list = option_find_str(options, "names", 0); + if(!name_list) name_list = option_find_str(options, "labels", 0); + if(!name_list) { + fprintf(stderr, "No names or labels found\n"); + } else { + m.names = get_labels(name_list); + } + m.classes = option_find_int(options, "classes", 2); + free_list(options); + return m; +} + +int read_option(char *s, list *options) +{ + size_t i; + size_t len = strlen(s); + char *val = 0; + for(i = 0; i < len; ++i){ + if(s[i] == '='){ + s[i] = '\0'; + val = s+i+1; + break; + } + } + if(i == len-1) return 0; + char *key = s; + option_insert(options, key, val); + return 1; +} + +void option_insert(list *l, char *key, char *val) +{ + kvp *p = malloc(sizeof(kvp)); + p->key = key; + p->val = val; + p->used = 0; + list_insert(l, p); +} + +void option_unused(list *l) +{ + node *n = l->front; + while(n){ + kvp *p = (kvp *)n->val; + if(!p->used){ + fprintf(stderr, "Unused field: '%s = %s'\n", p->key, p->val); + } + n = n->next; + } +} + +char *option_find(list *l, char *key) +{ + node *n = l->front; + while(n){ + kvp *p = (kvp *)n->val; + if(strcmp(p->key, key) == 0){ + p->used = 1; + return p->val; + } + n = n->next; + } + return 0; +} +char *option_find_str(list *l, char *key, char *def) +{ + char *v = option_find(l, key); + if(v) return v; + if(def) fprintf(stderr, "%s: Using default '%s'\n", key, def); + return def; +} + +int option_find_int(list *l, char *key, int def) +{ + char *v = option_find(l, key); + if(v) return atoi(v); + fprintf(stderr, "%s: Using default '%d'\n", key, def); + return def; +} + +int option_find_int_quiet(list *l, char *key, int def) +{ + char *v = option_find(l, key); + if(v) return atoi(v); + return def; +} + +float option_find_float_quiet(list *l, char *key, float def) +{ + char *v = option_find(l, key); + if(v) return atof(v); + return def; +} + +float option_find_float(list *l, char *key, float def) +{ + char *v = option_find(l, key); + if(v) return atof(v); + fprintf(stderr, "%s: Using default '%lf'\n", key, def); + return def; +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/option_list.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/option_list.h" new file mode 100644 index 00000000..844bd872 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/option_list.h" @@ -0,0 +1,19 @@ +#ifndef OPTION_LIST_H +#define OPTION_LIST_H +#include "list.h" + +typedef struct{ + char *key; + char *val; + int used; +} kvp; + + +int read_option(char *s, list *options); +void option_insert(list *l, char *key, char *val); +char *option_find(list *l, char *key); +float option_find_float(list *l, char *key, float def); +float option_find_float_quiet(list *l, char *key, float def); +void option_unused(list *l); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/parser.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/parser.c" new file mode 100644 index 00000000..c8141c9f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/parser.c" @@ -0,0 +1,1312 @@ +#include +#include +#include +#include + +#include "activation_layer.h" +#include "logistic_layer.h" +#include "l2norm_layer.h" +#include "activations.h" +#include "avgpool_layer.h" +#include "batchnorm_layer.h" +#include "blas.h" +#include "connected_layer.h" +#include "deconvolutional_layer.h" +#include "convolutional_layer.h" +#include "cost_layer.h" +#include "crnn_layer.h" +#include "crop_layer.h" +#include "detection_layer.h" +#include "dropout_layer.h" +#include "gru_layer.h" +#include "list.h" +#include "local_layer.h" +#include "maxpool_layer.h" +#include "normalization_layer.h" +#include "option_list.h" +#include "parser.h" +#include "region_layer.h" +#include "yolo_layer.h" +#include "iseg_layer.h" +#include "reorg_layer.h" +#include "rnn_layer.h" +#include "route_layer.h" +#include "upsample_layer.h" +#include "shortcut_layer.h" +#include "softmax_layer.h" +#include "lstm_layer.h" +#include "utils.h" + +typedef struct{ + char *type; + list *options; +}section; + +list *read_cfg(char *filename); + +LAYER_TYPE string_to_layer_type(char * type) +{ + + if (strcmp(type, "[shortcut]")==0) return SHORTCUT; + if (strcmp(type, "[crop]")==0) return CROP; + if (strcmp(type, "[cost]")==0) return COST; + if (strcmp(type, "[detection]")==0) return DETECTION; + if (strcmp(type, "[region]")==0) return REGION; + if (strcmp(type, "[yolo]")==0) return YOLO; + if (strcmp(type, "[iseg]")==0) return ISEG; + if (strcmp(type, "[local]")==0) return LOCAL; + if (strcmp(type, "[conv]")==0 + || strcmp(type, "[convolutional]")==0) return CONVOLUTIONAL; + if (strcmp(type, "[deconv]")==0 + || strcmp(type, "[deconvolutional]")==0) return DECONVOLUTIONAL; + if (strcmp(type, "[activation]")==0) return ACTIVE; + if (strcmp(type, "[logistic]")==0) return LOGXENT; + if (strcmp(type, "[l2norm]")==0) return L2NORM; + if (strcmp(type, "[net]")==0 + || strcmp(type, "[network]")==0) return NETWORK; + if (strcmp(type, "[crnn]")==0) return CRNN; + if (strcmp(type, "[gru]")==0) return GRU; + if (strcmp(type, "[lstm]") == 0) return LSTM; + if (strcmp(type, "[rnn]")==0) return RNN; + if (strcmp(type, "[conn]")==0 + || strcmp(type, "[connected]")==0) return CONNECTED; + if (strcmp(type, "[max]")==0 + || strcmp(type, "[maxpool]")==0) return MAXPOOL; + if (strcmp(type, "[reorg]")==0) return REORG; + if (strcmp(type, "[avg]")==0 + || strcmp(type, "[avgpool]")==0) return AVGPOOL; + if (strcmp(type, "[dropout]")==0) return DROPOUT; + if (strcmp(type, "[lrn]")==0 + || strcmp(type, "[normalization]")==0) return NORMALIZATION; + if (strcmp(type, "[batchnorm]")==0) return BATCHNORM; + if (strcmp(type, "[soft]")==0 + || strcmp(type, "[softmax]")==0) return SOFTMAX; + if (strcmp(type, "[route]")==0) return ROUTE; + if (strcmp(type, "[upsample]")==0) return UPSAMPLE; + return BLANK; +} + +void free_section(section *s) +{ + free(s->type); + node *n = s->options->front; + while(n){ + kvp *pair = (kvp *)n->val; + free(pair->key); + free(pair); + node *next = n->next; + free(n); + n = next; + } + free(s->options); + free(s); +} + +void parse_data(char *data, float *a, int n) +{ + int i; + if(!data) return; + char *curr = data; + char *next = data; + int done = 0; + for(i = 0; i < n && !done; ++i){ + while(*++next !='\0' && *next != ','); + if(*next == '\0') done = 1; + *next = '\0'; + sscanf(curr, "%g", &a[i]); + curr = next+1; + } +} + +typedef struct size_params{ + int batch; + int inputs; + int h; + int w; + int c; + int index; + int time_steps; + network *net; +} size_params; + +local_layer parse_local(list *options, size_params params) +{ + int n = option_find_int(options, "filters",1); + int size = option_find_int(options, "size",1); + int stride = option_find_int(options, "stride",1); + int pad = option_find_int(options, "pad",0); + char *activation_s = option_find_str(options, "activation", "logistic"); + ACTIVATION activation = get_activation(activation_s); + + int batch,h,w,c; + h = params.h; + w = params.w; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before local layer must output image."); + + local_layer layer = make_local_layer(batch,h,w,c,n,size,stride,pad,activation); + + return layer; +} + +layer parse_deconvolutional(list *options, size_params params) +{ + int n = option_find_int(options, "filters",1); + int size = option_find_int(options, "size",1); + int stride = option_find_int(options, "stride",1); + + char *activation_s = option_find_str(options, "activation", "logistic"); + ACTIVATION activation = get_activation(activation_s); + + int batch,h,w,c; + h = params.h; + w = params.w; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before deconvolutional layer must output image."); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + int pad = option_find_int_quiet(options, "pad",0); + int padding = option_find_int_quiet(options, "padding",0); + if(pad) padding = size/2; + + layer l = make_deconvolutional_layer(batch,h,w,c,n,size,stride,padding, activation, batch_normalize, params.net->adam); + + return l; +} + + +convolutional_layer parse_convolutional(list *options, size_params params) +{ + int n = option_find_int(options, "filters",1); + int size = option_find_int(options, "size",1); + int stride = option_find_int(options, "stride",1); + int pad = option_find_int_quiet(options, "pad",0); + int padding = option_find_int_quiet(options, "padding",0); + int groups = option_find_int_quiet(options, "groups", 1); + if(pad) padding = size/2; + + char *activation_s = option_find_str(options, "activation", "logistic"); + ACTIVATION activation = get_activation(activation_s); + + int batch,h,w,c; + h = params.h; + w = params.w; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before convolutional layer must output image."); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + int binary = option_find_int_quiet(options, "binary", 0); + int xnor = option_find_int_quiet(options, "xnor", 0); + + convolutional_layer layer = make_convolutional_layer(batch,h,w,c,n,groups,size,stride,padding,activation, batch_normalize, binary, xnor, params.net->adam); + layer.flipped = option_find_int_quiet(options, "flipped", 0); + layer.dot = option_find_float_quiet(options, "dot", 0); + + return layer; +} + +layer parse_crnn(list *options, size_params params) +{ + int output_filters = option_find_int(options, "output_filters",1); + int hidden_filters = option_find_int(options, "hidden_filters",1); + char *activation_s = option_find_str(options, "activation", "logistic"); + ACTIVATION activation = get_activation(activation_s); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + + layer l = make_crnn_layer(params.batch, params.w, params.h, params.c, hidden_filters, output_filters, params.time_steps, activation, batch_normalize); + + l.shortcut = option_find_int_quiet(options, "shortcut", 0); + + return l; +} + +layer parse_rnn(list *options, size_params params) +{ + int output = option_find_int(options, "output",1); + char *activation_s = option_find_str(options, "activation", "logistic"); + ACTIVATION activation = get_activation(activation_s); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + + layer l = make_rnn_layer(params.batch, params.inputs, output, params.time_steps, activation, batch_normalize, params.net->adam); + + l.shortcut = option_find_int_quiet(options, "shortcut", 0); + + return l; +} + +layer parse_gru(list *options, size_params params) +{ + int output = option_find_int(options, "output",1); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + + layer l = make_gru_layer(params.batch, params.inputs, output, params.time_steps, batch_normalize, params.net->adam); + l.tanh = option_find_int_quiet(options, "tanh", 0); + + return l; +} + +layer parse_lstm(list *options, size_params params) +{ + int output = option_find_int(options, "output", 1); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + + layer l = make_lstm_layer(params.batch, params.inputs, output, params.time_steps, batch_normalize, params.net->adam); + + return l; +} + +layer parse_connected(list *options, size_params params) +{ + int output = option_find_int(options, "output",1); + char *activation_s = option_find_str(options, "activation", "logistic"); + ACTIVATION activation = get_activation(activation_s); + int batch_normalize = option_find_int_quiet(options, "batch_normalize", 0); + + layer l = make_connected_layer(params.batch, params.inputs, output, activation, batch_normalize, params.net->adam); + return l; +} + +layer parse_softmax(list *options, size_params params) +{ + int groups = option_find_int_quiet(options, "groups",1); + layer l = make_softmax_layer(params.batch, params.inputs, groups); + l.temperature = option_find_float_quiet(options, "temperature", 1); + char *tree_file = option_find_str(options, "tree", 0); + if (tree_file) l.softmax_tree = read_tree(tree_file); + l.w = params.w; + l.h = params.h; + l.c = params.c; + l.spatial = option_find_float_quiet(options, "spatial", 0); + l.noloss = option_find_int_quiet(options, "noloss", 0); + return l; +} + +int *parse_yolo_mask(char *a, int *num) +{ + int *mask = 0; + if(a){ + int len = strlen(a); + int n = 1; + int i; + for(i = 0; i < len; ++i){ + if (a[i] == ',') ++n; + } + mask = calloc(n, sizeof(int)); + for(i = 0; i < n; ++i){ + int val = atoi(a); + mask[i] = val; + a = strchr(a, ',')+1; + } + *num = n; + } + return mask; +} + +layer parse_yolo(list *options, size_params params) +{ + int classes = option_find_int(options, "classes", 20); + int total = option_find_int(options, "num", 1); + int num = total; + + char *a = option_find_str(options, "mask", 0); + int *mask = parse_yolo_mask(a, &num); + layer l = make_yolo_layer(params.batch, params.w, params.h, num, total, mask, classes); + assert(l.outputs == params.inputs); + + l.max_boxes = option_find_int_quiet(options, "max",90); + l.jitter = option_find_float(options, "jitter", .2); + + l.ignore_thresh = option_find_float(options, "ignore_thresh", .5); + l.truth_thresh = option_find_float(options, "truth_thresh", 1); + l.random = option_find_int_quiet(options, "random", 0); + + char *map_file = option_find_str(options, "map", 0); + if (map_file) l.map = read_map(map_file); + + a = option_find_str(options, "anchors", 0); + if(a){ + int len = strlen(a); + int n = 1; + int i; + for(i = 0; i < len; ++i){ + if (a[i] == ',') ++n; + } + for(i = 0; i < n; ++i){ + float bias = atof(a); + l.biases[i] = bias; + a = strchr(a, ',')+1; + } + } + return l; +} + +layer parse_iseg(list *options, size_params params) +{ + int classes = option_find_int(options, "classes", 20); + int ids = option_find_int(options, "ids", 32); + layer l = make_iseg_layer(params.batch, params.w, params.h, classes, ids); + assert(l.outputs == params.inputs); + return l; +} + +layer parse_region(list *options, size_params params) +{ + int coords = option_find_int(options, "coords", 4); + int classes = option_find_int(options, "classes", 20); + int num = option_find_int(options, "num", 1); + + layer l = make_region_layer(params.batch, params.w, params.h, num, classes, coords); + assert(l.outputs == params.inputs); + + l.log = option_find_int_quiet(options, "log", 0); + l.sqrt = option_find_int_quiet(options, "sqrt", 0); + + l.softmax = option_find_int(options, "softmax", 0); + l.background = option_find_int_quiet(options, "background", 0); + l.max_boxes = option_find_int_quiet(options, "max",30); + l.jitter = option_find_float(options, "jitter", .2); + l.rescore = option_find_int_quiet(options, "rescore",0); + + l.thresh = option_find_float(options, "thresh", .5); + l.classfix = option_find_int_quiet(options, "classfix", 0); + l.absolute = option_find_int_quiet(options, "absolute", 0); + l.random = option_find_int_quiet(options, "random", 0); + + l.coord_scale = option_find_float(options, "coord_scale", 1); + l.object_scale = option_find_float(options, "object_scale", 1); + l.noobject_scale = option_find_float(options, "noobject_scale", 1); + l.mask_scale = option_find_float(options, "mask_scale", 1); + l.class_scale = option_find_float(options, "class_scale", 1); + l.bias_match = option_find_int_quiet(options, "bias_match",0); + + char *tree_file = option_find_str(options, "tree", 0); + if (tree_file) l.softmax_tree = read_tree(tree_file); + char *map_file = option_find_str(options, "map", 0); + if (map_file) l.map = read_map(map_file); + + char *a = option_find_str(options, "anchors", 0); + if(a){ + int len = strlen(a); + int n = 1; + int i; + for(i = 0; i < len; ++i){ + if (a[i] == ',') ++n; + } + for(i = 0; i < n; ++i){ + float bias = atof(a); + l.biases[i] = bias; + a = strchr(a, ',')+1; + } + } + return l; +} + +detection_layer parse_detection(list *options, size_params params) +{ + int coords = option_find_int(options, "coords", 1); + int classes = option_find_int(options, "classes", 1); + int rescore = option_find_int(options, "rescore", 0); + int num = option_find_int(options, "num", 1); + int side = option_find_int(options, "side", 7); + detection_layer layer = make_detection_layer(params.batch, params.inputs, num, side, classes, coords, rescore); + + layer.softmax = option_find_int(options, "softmax", 0); + layer.sqrt = option_find_int(options, "sqrt", 0); + + layer.max_boxes = option_find_int_quiet(options, "max",90); + layer.coord_scale = option_find_float(options, "coord_scale", 1); + layer.forced = option_find_int(options, "forced", 0); + layer.object_scale = option_find_float(options, "object_scale", 1); + layer.noobject_scale = option_find_float(options, "noobject_scale", 1); + layer.class_scale = option_find_float(options, "class_scale", 1); + layer.jitter = option_find_float(options, "jitter", .2); + layer.random = option_find_int_quiet(options, "random", 0); + layer.reorg = option_find_int_quiet(options, "reorg", 0); + return layer; +} + +cost_layer parse_cost(list *options, size_params params) +{ + char *type_s = option_find_str(options, "type", "sse"); + COST_TYPE type = get_cost_type(type_s); + float scale = option_find_float_quiet(options, "scale",1); + cost_layer layer = make_cost_layer(params.batch, params.inputs, type, scale); + layer.ratio = option_find_float_quiet(options, "ratio",0); + layer.noobject_scale = option_find_float_quiet(options, "noobj", 1); + layer.thresh = option_find_float_quiet(options, "thresh",0); + return layer; +} + +crop_layer parse_crop(list *options, size_params params) +{ + int crop_height = option_find_int(options, "crop_height",1); + int crop_width = option_find_int(options, "crop_width",1); + int flip = option_find_int(options, "flip",0); + float angle = option_find_float(options, "angle",0); + float saturation = option_find_float(options, "saturation",1); + float exposure = option_find_float(options, "exposure",1); + + int batch,h,w,c; + h = params.h; + w = params.w; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before crop layer must output image."); + + int noadjust = option_find_int_quiet(options, "noadjust",0); + + crop_layer l = make_crop_layer(batch,h,w,c,crop_height,crop_width,flip, angle, saturation, exposure); + l.shift = option_find_float(options, "shift", 0); + l.noadjust = noadjust; + return l; +} + +layer parse_reorg(list *options, size_params params) +{ + int stride = option_find_int(options, "stride",1); + int reverse = option_find_int_quiet(options, "reverse",0); + int flatten = option_find_int_quiet(options, "flatten",0); + int extra = option_find_int_quiet(options, "extra",0); + + int batch,h,w,c; + h = params.h; + w = params.w; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before reorg layer must output image."); + + layer layer = make_reorg_layer(batch,w,h,c,stride,reverse, flatten, extra); + return layer; +} + +maxpool_layer parse_maxpool(list *options, size_params params) +{ + int stride = option_find_int(options, "stride",1); + int size = option_find_int(options, "size",stride); + int padding = option_find_int_quiet(options, "padding", size-1); + + int batch,h,w,c; + h = params.h; + w = params.w; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before maxpool layer must output image."); + + maxpool_layer layer = make_maxpool_layer(batch,h,w,c,size,stride,padding); + return layer; +} + +avgpool_layer parse_avgpool(list *options, size_params params) +{ + int batch,w,h,c; + w = params.w; + h = params.h; + c = params.c; + batch=params.batch; + if(!(h && w && c)) error("Layer before avgpool layer must output image."); + + avgpool_layer layer = make_avgpool_layer(batch,w,h,c); + return layer; +} + +dropout_layer parse_dropout(list *options, size_params params) +{ + float probability = option_find_float(options, "probability", .5); + dropout_layer layer = make_dropout_layer(params.batch, params.inputs, probability); + layer.out_w = params.w; + layer.out_h = params.h; + layer.out_c = params.c; + return layer; +} + +layer parse_normalization(list *options, size_params params) +{ + float alpha = option_find_float(options, "alpha", .0001); + float beta = option_find_float(options, "beta" , .75); + float kappa = option_find_float(options, "kappa", 1); + int size = option_find_int(options, "size", 5); + layer l = make_normalization_layer(params.batch, params.w, params.h, params.c, size, alpha, beta, kappa); + return l; +} + +layer parse_batchnorm(list *options, size_params params) +{ + layer l = make_batchnorm_layer(params.batch, params.w, params.h, params.c); + return l; +} + +layer parse_shortcut(list *options, size_params params, network *net) +{ + char *l = option_find(options, "from"); + int index = atoi(l); + if(index < 0) index = params.index + index; + + int batch = params.batch; + layer from = net->layers[index]; + + layer s = make_shortcut_layer(batch, index, params.w, params.h, params.c, from.out_w, from.out_h, from.out_c); + + char *activation_s = option_find_str(options, "activation", "linear"); + ACTIVATION activation = get_activation(activation_s); + s.activation = activation; + s.alpha = option_find_float_quiet(options, "alpha", 1); + s.beta = option_find_float_quiet(options, "beta", 1); + return s; +} + + +layer parse_l2norm(list *options, size_params params) +{ + layer l = make_l2norm_layer(params.batch, params.inputs); + l.h = l.out_h = params.h; + l.w = l.out_w = params.w; + l.c = l.out_c = params.c; + return l; +} + + +layer parse_logistic(list *options, size_params params) +{ + layer l = make_logistic_layer(params.batch, params.inputs); + l.h = l.out_h = params.h; + l.w = l.out_w = params.w; + l.c = l.out_c = params.c; + return l; +} + +layer parse_activation(list *options, size_params params) +{ + char *activation_s = option_find_str(options, "activation", "linear"); + ACTIVATION activation = get_activation(activation_s); + + layer l = make_activation_layer(params.batch, params.inputs, activation); + + l.h = l.out_h = params.h; + l.w = l.out_w = params.w; + l.c = l.out_c = params.c; + + return l; +} + +layer parse_upsample(list *options, size_params params, network *net) +{ + + int stride = option_find_int(options, "stride",2); + layer l = make_upsample_layer(params.batch, params.w, params.h, params.c, stride); + l.scale = option_find_float_quiet(options, "scale", 1); + return l; +} + +route_layer parse_route(list *options, size_params params, network *net) +{ + char *l = option_find(options, "layers"); + int len = strlen(l); + if(!l) error("Route Layer must specify input layers"); + int n = 1; + int i; + for(i = 0; i < len; ++i){ + if (l[i] == ',') ++n; + } + + int *layers = calloc(n, sizeof(int)); + int *sizes = calloc(n, sizeof(int)); + for(i = 0; i < n; ++i){ + int index = atoi(l); + l = strchr(l, ',')+1; + if(index < 0) index = params.index + index; + layers[i] = index; + sizes[i] = net->layers[index].outputs; + } + int batch = params.batch; + + route_layer layer = make_route_layer(batch, n, layers, sizes); + + convolutional_layer first = net->layers[layers[0]]; + layer.out_w = first.out_w; + layer.out_h = first.out_h; + layer.out_c = first.out_c; + for(i = 1; i < n; ++i){ + int index = layers[i]; + convolutional_layer next = net->layers[index]; + if(next.out_w == first.out_w && next.out_h == first.out_h){ + layer.out_c += next.out_c; + }else{ + layer.out_h = layer.out_w = layer.out_c = 0; + } + } + + return layer; +} + +learning_rate_policy get_policy(char *s) +{ + if (strcmp(s, "random")==0) return RANDOM; + if (strcmp(s, "poly")==0) return POLY; + if (strcmp(s, "constant")==0) return CONSTANT; + if (strcmp(s, "step")==0) return STEP; + if (strcmp(s, "exp")==0) return EXP; + if (strcmp(s, "sigmoid")==0) return SIG; + if (strcmp(s, "steps")==0) return STEPS; + fprintf(stderr, "Couldn't find policy %s, going with constant\n", s); + return CONSTANT; +} + +void parse_net_options(list *options, network *net) +{ + net->batch = option_find_int(options, "batch",1); + net->learning_rate = option_find_float(options, "learning_rate", .001); + net->momentum = option_find_float(options, "momentum", .9); + net->decay = option_find_float(options, "decay", .0001); + int subdivs = option_find_int(options, "subdivisions",1); + net->time_steps = option_find_int_quiet(options, "time_steps",1); + net->notruth = option_find_int_quiet(options, "notruth",0); + net->batch /= subdivs; + net->batch *= net->time_steps; + net->subdivisions = subdivs; + net->random = option_find_int_quiet(options, "random", 0); + + net->adam = option_find_int_quiet(options, "adam", 0); + if(net->adam){ + net->B1 = option_find_float(options, "B1", .9); + net->B2 = option_find_float(options, "B2", .999); + net->eps = option_find_float(options, "eps", .0000001); + } + + net->h = option_find_int_quiet(options, "height",0); + net->w = option_find_int_quiet(options, "width",0); + net->c = option_find_int_quiet(options, "channels",0); + net->inputs = option_find_int_quiet(options, "inputs", net->h * net->w * net->c); + net->max_crop = option_find_int_quiet(options, "max_crop",net->w*2); + net->min_crop = option_find_int_quiet(options, "min_crop",net->w); + net->max_ratio = option_find_float_quiet(options, "max_ratio", (float) net->max_crop / net->w); + net->min_ratio = option_find_float_quiet(options, "min_ratio", (float) net->min_crop / net->w); + net->center = option_find_int_quiet(options, "center",0); + net->clip = option_find_float_quiet(options, "clip", 0); + + net->angle = option_find_float_quiet(options, "angle", 0); + net->aspect = option_find_float_quiet(options, "aspect", 1); + net->saturation = option_find_float_quiet(options, "saturation", 1); + net->exposure = option_find_float_quiet(options, "exposure", 1); + net->hue = option_find_float_quiet(options, "hue", 0); + + if(!net->inputs && !(net->h && net->w && net->c)) error("No input parameters supplied"); + + char *policy_s = option_find_str(options, "policy", "constant"); + net->policy = get_policy(policy_s); + net->burn_in = option_find_int_quiet(options, "burn_in", 0); + net->power = option_find_float_quiet(options, "power", 4); + if(net->policy == STEP){ + net->step = option_find_int(options, "step", 1); + net->scale = option_find_float(options, "scale", 1); + } else if (net->policy == STEPS){ + char *l = option_find(options, "steps"); + char *p = option_find(options, "scales"); + if(!l || !p) error("STEPS policy must have steps and scales in cfg file"); + + int len = strlen(l); + int n = 1; + int i; + for(i = 0; i < len; ++i){ + if (l[i] == ',') ++n; + } + int *steps = calloc(n, sizeof(int)); + float *scales = calloc(n, sizeof(float)); + for(i = 0; i < n; ++i){ + int step = atoi(l); + float scale = atof(p); + l = strchr(l, ',')+1; + p = strchr(p, ',')+1; + steps[i] = step; + scales[i] = scale; + } + net->scales = scales; + net->steps = steps; + net->num_steps = n; + } else if (net->policy == EXP){ + net->gamma = option_find_float(options, "gamma", 1); + } else if (net->policy == SIG){ + net->gamma = option_find_float(options, "gamma", 1); + net->step = option_find_int(options, "step", 1); + } else if (net->policy == POLY || net->policy == RANDOM){ + } + net->max_batches = option_find_int(options, "max_batches", 0); +} + +int is_network(section *s) +{ + return (strcmp(s->type, "[net]")==0 + || strcmp(s->type, "[network]")==0); +} + +network *parse_network_cfg(char *filename) +{ + list *sections = read_cfg(filename); + node *n = sections->front; + if(!n) error("Config file has no sections"); + network *net = make_network(sections->size - 1); + net->gpu_index = gpu_index; + size_params params; + + section *s = (section *)n->val; + list *options = s->options; + if(!is_network(s)) error("First section must be [net] or [network]"); + parse_net_options(options, net); + + params.h = net->h; + params.w = net->w; + params.c = net->c; + params.inputs = net->inputs; + params.batch = net->batch; + params.time_steps = net->time_steps; + params.net = net; + + size_t workspace_size = 0; + n = n->next; + int count = 0; + free_section(s); + fprintf(stderr, "layer filters size input output\n"); + while(n){ + params.index = count; + fprintf(stderr, "%5d ", count); + s = (section *)n->val; + options = s->options; + layer l = {0}; + LAYER_TYPE lt = string_to_layer_type(s->type); + if(lt == CONVOLUTIONAL){ + l = parse_convolutional(options, params); + }else if(lt == DECONVOLUTIONAL){ + l = parse_deconvolutional(options, params); + }else if(lt == LOCAL){ + l = parse_local(options, params); + }else if(lt == ACTIVE){ + l = parse_activation(options, params); + }else if(lt == LOGXENT){ + l = parse_logistic(options, params); + }else if(lt == L2NORM){ + l = parse_l2norm(options, params); + }else if(lt == RNN){ + l = parse_rnn(options, params); + }else if(lt == GRU){ + l = parse_gru(options, params); + }else if (lt == LSTM) { + l = parse_lstm(options, params); + }else if(lt == CRNN){ + l = parse_crnn(options, params); + }else if(lt == CONNECTED){ + l = parse_connected(options, params); + }else if(lt == CROP){ + l = parse_crop(options, params); + }else if(lt == COST){ + l = parse_cost(options, params); + }else if(lt == REGION){ + l = parse_region(options, params); + }else if(lt == YOLO){ + l = parse_yolo(options, params); + }else if(lt == ISEG){ + l = parse_iseg(options, params); + }else if(lt == DETECTION){ + l = parse_detection(options, params); + }else if(lt == SOFTMAX){ + l = parse_softmax(options, params); + net->hierarchy = l.softmax_tree; + }else if(lt == NORMALIZATION){ + l = parse_normalization(options, params); + }else if(lt == BATCHNORM){ + l = parse_batchnorm(options, params); + }else if(lt == MAXPOOL){ + l = parse_maxpool(options, params); + }else if(lt == REORG){ + l = parse_reorg(options, params); + }else if(lt == AVGPOOL){ + l = parse_avgpool(options, params); + }else if(lt == ROUTE){ + l = parse_route(options, params, net); + }else if(lt == UPSAMPLE){ + l = parse_upsample(options, params, net); + }else if(lt == SHORTCUT){ + l = parse_shortcut(options, params, net); + }else if(lt == DROPOUT){ + l = parse_dropout(options, params); + l.output = net->layers[count-1].output; + l.delta = net->layers[count-1].delta; +#ifdef GPU + l.output_gpu = net->layers[count-1].output_gpu; + l.delta_gpu = net->layers[count-1].delta_gpu; +#endif + }else{ + fprintf(stderr, "Type not recognized: %s\n", s->type); + } + l.clip = net->clip; + l.truth = option_find_int_quiet(options, "truth", 0); + l.onlyforward = option_find_int_quiet(options, "onlyforward", 0); + l.stopbackward = option_find_int_quiet(options, "stopbackward", 0); + l.dontsave = option_find_int_quiet(options, "dontsave", 0); + l.dontload = option_find_int_quiet(options, "dontload", 0); + l.numload = option_find_int_quiet(options, "numload", 0); + l.dontloadscales = option_find_int_quiet(options, "dontloadscales", 0); + l.learning_rate_scale = option_find_float_quiet(options, "learning_rate", 1); + l.smooth = option_find_float_quiet(options, "smooth", 0); + option_unused(options); + net->layers[count] = l; + if (l.workspace_size > workspace_size) workspace_size = l.workspace_size; + free_section(s); + n = n->next; + ++count; + if(n){ + params.h = l.out_h; + params.w = l.out_w; + params.c = l.out_c; + params.inputs = l.outputs; + } + } + free_list(sections); + layer out = get_network_output_layer(net); + net->outputs = out.outputs; + net->truths = out.outputs; + if(net->layers[net->n-1].truths) net->truths = net->layers[net->n-1].truths; + net->output = out.output; + net->input = calloc(net->inputs*net->batch, sizeof(float)); + net->truth = calloc(net->truths*net->batch, sizeof(float)); +#ifdef GPU + net->output_gpu = out.output_gpu; + net->input_gpu = cuda_make_array(net->input, net->inputs*net->batch); + net->truth_gpu = cuda_make_array(net->truth, net->truths*net->batch); +#endif + if(workspace_size){ + //printf("%ld\n", workspace_size); +#ifdef GPU + if(gpu_index >= 0){ + net->workspace = cuda_make_array(0, (workspace_size-1)/sizeof(float)+1); + }else { + net->workspace = calloc(1, workspace_size); + } +#else + net->workspace = calloc(1, workspace_size); +#endif + } + return net; +} + +list *read_cfg(char *filename) +{ + FILE *file = fopen(filename, "r"); + if(file == 0) file_error(filename); + char *line; + int nu = 0; + list *options = make_list(); + section *current = 0; + while((line=fgetl(file)) != 0){ + ++ nu; + strip(line); + switch(line[0]){ + case '[': + current = malloc(sizeof(section)); + list_insert(options, current); + current->options = make_list(); + current->type = line; + break; + case '\0': + case '#': + case ';': + free(line); + break; + default: + if(!read_option(line, current->options)){ + fprintf(stderr, "Config file error line %d, could parse: %s\n", nu, line); + free(line); + } + break; + } + } + fclose(file); + return options; +} + +void save_convolutional_weights_binary(layer l, FILE *fp) +{ +#ifdef GPU + if(gpu_index >= 0){ + pull_convolutional_layer(l); + } +#endif + binarize_weights(l.weights, l.n, l.c*l.size*l.size, l.binary_weights); + int size = l.c*l.size*l.size; + int i, j, k; + fwrite(l.biases, sizeof(float), l.n, fp); + if (l.batch_normalize){ + fwrite(l.scales, sizeof(float), l.n, fp); + fwrite(l.rolling_mean, sizeof(float), l.n, fp); + fwrite(l.rolling_variance, sizeof(float), l.n, fp); + } + for(i = 0; i < l.n; ++i){ + float mean = l.binary_weights[i*size]; + if(mean < 0) mean = -mean; + fwrite(&mean, sizeof(float), 1, fp); + for(j = 0; j < size/8; ++j){ + int index = i*size + j*8; + unsigned char c = 0; + for(k = 0; k < 8; ++k){ + if (j*8 + k >= size) break; + if (l.binary_weights[index + k] > 0) c = (c | 1<= 0){ + pull_convolutional_layer(l); + } +#endif + int num = l.nweights; + fwrite(l.biases, sizeof(float), l.n, fp); + if (l.batch_normalize){ + fwrite(l.scales, sizeof(float), l.n, fp); + fwrite(l.rolling_mean, sizeof(float), l.n, fp); + fwrite(l.rolling_variance, sizeof(float), l.n, fp); + } + fwrite(l.weights, sizeof(float), num, fp); +} + +void save_batchnorm_weights(layer l, FILE *fp) +{ +#ifdef GPU + if(gpu_index >= 0){ + pull_batchnorm_layer(l); + } +#endif + fwrite(l.scales, sizeof(float), l.c, fp); + fwrite(l.rolling_mean, sizeof(float), l.c, fp); + fwrite(l.rolling_variance, sizeof(float), l.c, fp); +} + +void save_connected_weights(layer l, FILE *fp) +{ +#ifdef GPU + if(gpu_index >= 0){ + pull_connected_layer(l); + } +#endif + fwrite(l.biases, sizeof(float), l.outputs, fp); + fwrite(l.weights, sizeof(float), l.outputs*l.inputs, fp); + if (l.batch_normalize){ + fwrite(l.scales, sizeof(float), l.outputs, fp); + fwrite(l.rolling_mean, sizeof(float), l.outputs, fp); + fwrite(l.rolling_variance, sizeof(float), l.outputs, fp); + } +} + +void save_weights_upto(network *net, char *filename, int cutoff) +{ +#ifdef GPU + if(net->gpu_index >= 0){ + cuda_set_device(net->gpu_index); + } +#endif + fprintf(stderr, "Saving weights to %s\n", filename); + FILE *fp = fopen(filename, "wb"); + if(!fp) file_error(filename); + + int major = 0; + int minor = 2; + int revision = 0; + fwrite(&major, sizeof(int), 1, fp); + fwrite(&minor, sizeof(int), 1, fp); + fwrite(&revision, sizeof(int), 1, fp); + fwrite(net->seen, sizeof(size_t), 1, fp); + + int i; + for(i = 0; i < net->n && i < cutoff; ++i){ + layer l = net->layers[i]; + if (l.dontsave) continue; + if(l.type == CONVOLUTIONAL || l.type == DECONVOLUTIONAL){ + save_convolutional_weights(l, fp); + } if(l.type == CONNECTED){ + save_connected_weights(l, fp); + } if(l.type == BATCHNORM){ + save_batchnorm_weights(l, fp); + } if(l.type == RNN){ + save_connected_weights(*(l.input_layer), fp); + save_connected_weights(*(l.self_layer), fp); + save_connected_weights(*(l.output_layer), fp); + } if (l.type == LSTM) { + save_connected_weights(*(l.wi), fp); + save_connected_weights(*(l.wf), fp); + save_connected_weights(*(l.wo), fp); + save_connected_weights(*(l.wg), fp); + save_connected_weights(*(l.ui), fp); + save_connected_weights(*(l.uf), fp); + save_connected_weights(*(l.uo), fp); + save_connected_weights(*(l.ug), fp); + } if (l.type == GRU) { + if(1){ + save_connected_weights(*(l.wz), fp); + save_connected_weights(*(l.wr), fp); + save_connected_weights(*(l.wh), fp); + save_connected_weights(*(l.uz), fp); + save_connected_weights(*(l.ur), fp); + save_connected_weights(*(l.uh), fp); + }else{ + save_connected_weights(*(l.reset_layer), fp); + save_connected_weights(*(l.update_layer), fp); + save_connected_weights(*(l.state_layer), fp); + } + } if(l.type == CRNN){ + save_convolutional_weights(*(l.input_layer), fp); + save_convolutional_weights(*(l.self_layer), fp); + save_convolutional_weights(*(l.output_layer), fp); + } if(l.type == LOCAL){ +#ifdef GPU + if(gpu_index >= 0){ + pull_local_layer(l); + } +#endif + int locations = l.out_w*l.out_h; + int size = l.size*l.size*l.c*l.n*locations; + fwrite(l.biases, sizeof(float), l.outputs, fp); + fwrite(l.weights, sizeof(float), size, fp); + } + } + fclose(fp); +} +void save_weights(network *net, char *filename) +{ + save_weights_upto(net, filename, net->n); +} + +void transpose_matrix(float *a, int rows, int cols) +{ + float *transpose = calloc(rows*cols, sizeof(float)); + int x, y; + for(x = 0; x < rows; ++x){ + for(y = 0; y < cols; ++y){ + transpose[y*rows + x] = a[x*cols + y]; + } + } + memcpy(a, transpose, rows*cols*sizeof(float)); + free(transpose); +} + +void load_connected_weights(layer l, FILE *fp, int transpose) +{ + fread(l.biases, sizeof(float), l.outputs, fp); + fread(l.weights, sizeof(float), l.outputs*l.inputs, fp); + if(transpose){ + transpose_matrix(l.weights, l.inputs, l.outputs); + } + //printf("Biases: %f mean %f variance\n", mean_array(l.biases, l.outputs), variance_array(l.biases, l.outputs)); + //printf("Weights: %f mean %f variance\n", mean_array(l.weights, l.outputs*l.inputs), variance_array(l.weights, l.outputs*l.inputs)); + if (l.batch_normalize && (!l.dontloadscales)){ + fread(l.scales, sizeof(float), l.outputs, fp); + fread(l.rolling_mean, sizeof(float), l.outputs, fp); + fread(l.rolling_variance, sizeof(float), l.outputs, fp); + //printf("Scales: %f mean %f variance\n", mean_array(l.scales, l.outputs), variance_array(l.scales, l.outputs)); + //printf("rolling_mean: %f mean %f variance\n", mean_array(l.rolling_mean, l.outputs), variance_array(l.rolling_mean, l.outputs)); + //printf("rolling_variance: %f mean %f variance\n", mean_array(l.rolling_variance, l.outputs), variance_array(l.rolling_variance, l.outputs)); + } +#ifdef GPU + if(gpu_index >= 0){ + push_connected_layer(l); + } +#endif +} + +void load_batchnorm_weights(layer l, FILE *fp) +{ + fread(l.scales, sizeof(float), l.c, fp); + fread(l.rolling_mean, sizeof(float), l.c, fp); + fread(l.rolling_variance, sizeof(float), l.c, fp); +#ifdef GPU + if(gpu_index >= 0){ + push_batchnorm_layer(l); + } +#endif +} + +void load_convolutional_weights_binary(layer l, FILE *fp) +{ + fread(l.biases, sizeof(float), l.n, fp); + if (l.batch_normalize && (!l.dontloadscales)){ + fread(l.scales, sizeof(float), l.n, fp); + fread(l.rolling_mean, sizeof(float), l.n, fp); + fread(l.rolling_variance, sizeof(float), l.n, fp); + } + int size = l.c*l.size*l.size; + int i, j, k; + for(i = 0; i < l.n; ++i){ + float mean = 0; + fread(&mean, sizeof(float), 1, fp); + for(j = 0; j < size/8; ++j){ + int index = i*size + j*8; + unsigned char c = 0; + fread(&c, sizeof(char), 1, fp); + for(k = 0; k < 8; ++k){ + if (j*8 + k >= size) break; + l.weights[index + k] = (c & 1<= 0){ + push_convolutional_layer(l); + } +#endif +} + +void load_convolutional_weights(layer l, FILE *fp) +{ + if(l.binary){ + //load_convolutional_weights_binary(l, fp); + //return; + } + if(l.numload) l.n = l.numload; + int num = l.c/l.groups*l.n*l.size*l.size; + fread(l.biases, sizeof(float), l.n, fp); + if (l.batch_normalize && (!l.dontloadscales)){ + fread(l.scales, sizeof(float), l.n, fp); + fread(l.rolling_mean, sizeof(float), l.n, fp); + fread(l.rolling_variance, sizeof(float), l.n, fp); + if(0){ + int i; + for(i = 0; i < l.n; ++i){ + printf("%g, ", l.rolling_mean[i]); + } + printf("\n"); + for(i = 0; i < l.n; ++i){ + printf("%g, ", l.rolling_variance[i]); + } + printf("\n"); + } + if(0){ + fill_cpu(l.n, 0, l.rolling_mean, 1); + fill_cpu(l.n, 0, l.rolling_variance, 1); + } + if(0){ + int i; + for(i = 0; i < l.n; ++i){ + printf("%g, ", l.rolling_mean[i]); + } + printf("\n"); + for(i = 0; i < l.n; ++i){ + printf("%g, ", l.rolling_variance[i]); + } + printf("\n"); + } + } + fread(l.weights, sizeof(float), num, fp); + //if(l.c == 3) scal_cpu(num, 1./256, l.weights, 1); + if (l.flipped) { + transpose_matrix(l.weights, l.c*l.size*l.size, l.n); + } + //if (l.binary) binarize_weights(l.weights, l.n, l.c*l.size*l.size, l.weights); +#ifdef GPU + if(gpu_index >= 0){ + push_convolutional_layer(l); + } +#endif +} + + +void load_weights_upto(network *net, char *filename, int start, int cutoff) +{ +#ifdef GPU + if(net->gpu_index >= 0){ + cuda_set_device(net->gpu_index); + } +#endif + fprintf(stderr, "Loading weights from %s...", filename); + fflush(stdout); + FILE *fp = fopen(filename, "rb"); + if(!fp) file_error(filename); + + int major; + int minor; + int revision; + fread(&major, sizeof(int), 1, fp); + fread(&minor, sizeof(int), 1, fp); + fread(&revision, sizeof(int), 1, fp); + if ((major*10 + minor) >= 2 && major < 1000 && minor < 1000){ + fread(net->seen, sizeof(size_t), 1, fp); + } else { + int iseen = 0; + fread(&iseen, sizeof(int), 1, fp); + *net->seen = iseen; + } + int transpose = (major > 1000) || (minor > 1000); + + int i; + for(i = start; i < net->n && i < cutoff; ++i){ + layer l = net->layers[i]; + if (l.dontload) continue; + if(l.type == CONVOLUTIONAL || l.type == DECONVOLUTIONAL){ + load_convolutional_weights(l, fp); + } + if(l.type == CONNECTED){ + load_connected_weights(l, fp, transpose); + } + if(l.type == BATCHNORM){ + load_batchnorm_weights(l, fp); + } + if(l.type == CRNN){ + load_convolutional_weights(*(l.input_layer), fp); + load_convolutional_weights(*(l.self_layer), fp); + load_convolutional_weights(*(l.output_layer), fp); + } + if(l.type == RNN){ + load_connected_weights(*(l.input_layer), fp, transpose); + load_connected_weights(*(l.self_layer), fp, transpose); + load_connected_weights(*(l.output_layer), fp, transpose); + } + if (l.type == LSTM) { + load_connected_weights(*(l.wi), fp, transpose); + load_connected_weights(*(l.wf), fp, transpose); + load_connected_weights(*(l.wo), fp, transpose); + load_connected_weights(*(l.wg), fp, transpose); + load_connected_weights(*(l.ui), fp, transpose); + load_connected_weights(*(l.uf), fp, transpose); + load_connected_weights(*(l.uo), fp, transpose); + load_connected_weights(*(l.ug), fp, transpose); + } + if (l.type == GRU) { + if(1){ + load_connected_weights(*(l.wz), fp, transpose); + load_connected_weights(*(l.wr), fp, transpose); + load_connected_weights(*(l.wh), fp, transpose); + load_connected_weights(*(l.uz), fp, transpose); + load_connected_weights(*(l.ur), fp, transpose); + load_connected_weights(*(l.uh), fp, transpose); + }else{ + load_connected_weights(*(l.reset_layer), fp, transpose); + load_connected_weights(*(l.update_layer), fp, transpose); + load_connected_weights(*(l.state_layer), fp, transpose); + } + } + if(l.type == LOCAL){ + int locations = l.out_w*l.out_h; + int size = l.size*l.size*l.c*l.n*locations; + fread(l.biases, sizeof(float), l.outputs, fp); + fread(l.weights, sizeof(float), size, fp); +#ifdef GPU + if(gpu_index >= 0){ + push_local_layer(l); + } +#endif + } + } + fprintf(stderr, "Done!\n"); + fclose(fp); +} + +void load_weights(network *net, char *filename) +{ + load_weights_upto(net, filename, 0, net->n); +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/parser.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/parser.h" new file mode 100644 index 00000000..81aef2c8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/parser.h" @@ -0,0 +1,9 @@ +#ifndef PARSER_H +#define PARSER_H +#include "darknet.h" +#include "network.h" + +void save_network(network net, char *filename); +void save_weights_double(network net, char *filename); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/region_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/region_layer.c" new file mode 100644 index 00000000..179f5e32 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/region_layer.c" @@ -0,0 +1,507 @@ +#include "region_layer.h" +#include "activations.h" +#include "blas.h" +#include "box.h" +#include "cuda.h" +#include "utils.h" + +#include +#include +#include +#include + +layer make_region_layer(int batch, int w, int h, int n, int classes, int coords) +{ + layer l = {0}; + l.type = REGION; + + l.n = n; + l.batch = batch; + l.h = h; + l.w = w; + l.c = n*(classes + coords + 1); + l.out_w = l.w; + l.out_h = l.h; + l.out_c = l.c; + l.classes = classes; + l.coords = coords; + l.cost = calloc(1, sizeof(float)); + l.biases = calloc(n*2, sizeof(float)); + l.bias_updates = calloc(n*2, sizeof(float)); + l.outputs = h*w*n*(classes + coords + 1); + l.inputs = l.outputs; + l.truths = 30*(l.coords + 1); + l.delta = calloc(batch*l.outputs, sizeof(float)); + l.output = calloc(batch*l.outputs, sizeof(float)); + int i; + for(i = 0; i < n*2; ++i){ + l.biases[i] = .5; + } + + l.forward = forward_region_layer; + l.backward = backward_region_layer; +#ifdef GPU + l.forward_gpu = forward_region_layer_gpu; + l.backward_gpu = backward_region_layer_gpu; + l.output_gpu = cuda_make_array(l.output, batch*l.outputs); + l.delta_gpu = cuda_make_array(l.delta, batch*l.outputs); +#endif + + fprintf(stderr, "detection\n"); + srand(0); + + return l; +} + +void resize_region_layer(layer *l, int w, int h) +{ + l->w = w; + l->h = h; + + l->outputs = h*w*l->n*(l->classes + l->coords + 1); + l->inputs = l->outputs; + + l->output = realloc(l->output, l->batch*l->outputs*sizeof(float)); + l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float)); + +#ifdef GPU + cuda_free(l->delta_gpu); + cuda_free(l->output_gpu); + + l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs); + l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs); +#endif +} + +box get_region_box(float *x, float *biases, int n, int index, int i, int j, int w, int h, int stride) +{ + box b; + b.x = (i + x[index + 0*stride]) / w; + b.y = (j + x[index + 1*stride]) / h; + b.w = exp(x[index + 2*stride]) * biases[2*n] / w; + b.h = exp(x[index + 3*stride]) * biases[2*n+1] / h; + return b; +} + +float delta_region_box(box truth, float *x, float *biases, int n, int index, int i, int j, int w, int h, float *delta, float scale, int stride) +{ + box pred = get_region_box(x, biases, n, index, i, j, w, h, stride); + float iou = box_iou(pred, truth); + + float tx = (truth.x*w - i); + float ty = (truth.y*h - j); + float tw = log(truth.w*w / biases[2*n]); + float th = log(truth.h*h / biases[2*n + 1]); + + delta[index + 0*stride] = scale * (tx - x[index + 0*stride]); + delta[index + 1*stride] = scale * (ty - x[index + 1*stride]); + delta[index + 2*stride] = scale * (tw - x[index + 2*stride]); + delta[index + 3*stride] = scale * (th - x[index + 3*stride]); + return iou; +} + +void delta_region_mask(float *truth, float *x, int n, int index, float *delta, int stride, int scale) +{ + int i; + for(i = 0; i < n; ++i){ + delta[index + i*stride] = scale*(truth[i] - x[index + i*stride]); + } +} + + +void delta_region_class(float *output, float *delta, int index, int class, int classes, tree *hier, float scale, int stride, float *avg_cat, int tag) +{ + int i, n; + if(hier){ + float pred = 1; + while(class >= 0){ + pred *= output[index + stride*class]; + int g = hier->group[class]; + int offset = hier->group_offset[g]; + for(i = 0; i < hier->group_size[g]; ++i){ + delta[index + stride*(offset + i)] = scale * (0 - output[index + stride*(offset + i)]); + } + delta[index + stride*class] = scale * (1 - output[index + stride*class]); + + class = hier->parent[class]; + } + *avg_cat += pred; + } else { + if (delta[index] && tag){ + delta[index + stride*class] = scale * (1 - output[index + stride*class]); + return; + } + for(n = 0; n < classes; ++n){ + delta[index + stride*n] = scale * (((n == class)?1 : 0) - output[index + stride*n]); + if(n == class) *avg_cat += output[index + stride*n]; + } + } +} + +float logit(float x) +{ + return log(x/(1.-x)); +} + +float tisnan(float x) +{ + return (x != x); +} + +int entry_index(layer l, int batch, int location, int entry) +{ + int n = location / (l.w*l.h); + int loc = location % (l.w*l.h); + return batch*l.outputs + n*l.w*l.h*(l.coords+l.classes+1) + entry*l.w*l.h + loc; +} + +void forward_region_layer(const layer l, network net) +{ + int i,j,b,t,n; + memcpy(l.output, net.input, l.outputs*l.batch*sizeof(float)); + +#ifndef GPU + for (b = 0; b < l.batch; ++b){ + for(n = 0; n < l.n; ++n){ + int index = entry_index(l, b, n*l.w*l.h, 0); + activate_array(l.output + index, 2*l.w*l.h, LOGISTIC); + index = entry_index(l, b, n*l.w*l.h, l.coords); + if(!l.background) activate_array(l.output + index, l.w*l.h, LOGISTIC); + index = entry_index(l, b, n*l.w*l.h, l.coords + 1); + if(!l.softmax && !l.softmax_tree) activate_array(l.output + index, l.classes*l.w*l.h, LOGISTIC); + } + } + if (l.softmax_tree){ + int i; + int count = l.coords + 1; + for (i = 0; i < l.softmax_tree->groups; ++i) { + int group_size = l.softmax_tree->group_size[i]; + softmax_cpu(net.input + count, group_size, l.batch, l.inputs, l.n*l.w*l.h, 1, l.n*l.w*l.h, l.temperature, l.output + count); + count += group_size; + } + } else if (l.softmax){ + int index = entry_index(l, 0, 0, l.coords + !l.background); + softmax_cpu(net.input + index, l.classes + l.background, l.batch*l.n, l.inputs/l.n, l.w*l.h, 1, l.w*l.h, 1, l.output + index); + } +#endif + + memset(l.delta, 0, l.outputs * l.batch * sizeof(float)); + if(!net.train) return; + float avg_iou = 0; + float recall = 0; + float avg_cat = 0; + float avg_obj = 0; + float avg_anyobj = 0; + int count = 0; + int class_count = 0; + *(l.cost) = 0; + for (b = 0; b < l.batch; ++b) { + if(l.softmax_tree){ + int onlyclass = 0; + for(t = 0; t < 30; ++t){ + box truth = float_to_box(net.truth + t*(l.coords + 1) + b*l.truths, 1); + if(!truth.x) break; + int class = net.truth[t*(l.coords + 1) + b*l.truths + l.coords]; + float maxp = 0; + int maxi = 0; + if(truth.x > 100000 && truth.y > 100000){ + for(n = 0; n < l.n*l.w*l.h; ++n){ + int class_index = entry_index(l, b, n, l.coords + 1); + int obj_index = entry_index(l, b, n, l.coords); + float scale = l.output[obj_index]; + l.delta[obj_index] = l.noobject_scale * (0 - l.output[obj_index]); + float p = scale*get_hierarchy_probability(l.output + class_index, l.softmax_tree, class, l.w*l.h); + if(p > maxp){ + maxp = p; + maxi = n; + } + } + int class_index = entry_index(l, b, maxi, l.coords + 1); + int obj_index = entry_index(l, b, maxi, l.coords); + delta_region_class(l.output, l.delta, class_index, class, l.classes, l.softmax_tree, l.class_scale, l.w*l.h, &avg_cat, !l.softmax); + if(l.output[obj_index] < .3) l.delta[obj_index] = l.object_scale * (.3 - l.output[obj_index]); + else l.delta[obj_index] = 0; + l.delta[obj_index] = 0; + ++class_count; + onlyclass = 1; + break; + } + } + if(onlyclass) continue; + } + for (j = 0; j < l.h; ++j) { + for (i = 0; i < l.w; ++i) { + for (n = 0; n < l.n; ++n) { + int box_index = entry_index(l, b, n*l.w*l.h + j*l.w + i, 0); + box pred = get_region_box(l.output, l.biases, n, box_index, i, j, l.w, l.h, l.w*l.h); + float best_iou = 0; + for(t = 0; t < 30; ++t){ + box truth = float_to_box(net.truth + t*(l.coords + 1) + b*l.truths, 1); + if(!truth.x) break; + float iou = box_iou(pred, truth); + if (iou > best_iou) { + best_iou = iou; + } + } + int obj_index = entry_index(l, b, n*l.w*l.h + j*l.w + i, l.coords); + avg_anyobj += l.output[obj_index]; + l.delta[obj_index] = l.noobject_scale * (0 - l.output[obj_index]); + if(l.background) l.delta[obj_index] = l.noobject_scale * (1 - l.output[obj_index]); + if (best_iou > l.thresh) { + l.delta[obj_index] = 0; + } + + if(*(net.seen) < 12800){ + box truth = {0}; + truth.x = (i + .5)/l.w; + truth.y = (j + .5)/l.h; + truth.w = l.biases[2*n]/l.w; + truth.h = l.biases[2*n+1]/l.h; + delta_region_box(truth, l.output, l.biases, n, box_index, i, j, l.w, l.h, l.delta, .01, l.w*l.h); + } + } + } + } + for(t = 0; t < 30; ++t){ + box truth = float_to_box(net.truth + t*(l.coords + 1) + b*l.truths, 1); + + if(!truth.x) break; + float best_iou = 0; + int best_n = 0; + i = (truth.x * l.w); + j = (truth.y * l.h); + box truth_shift = truth; + truth_shift.x = 0; + truth_shift.y = 0; + for(n = 0; n < l.n; ++n){ + int box_index = entry_index(l, b, n*l.w*l.h + j*l.w + i, 0); + box pred = get_region_box(l.output, l.biases, n, box_index, i, j, l.w, l.h, l.w*l.h); + if(l.bias_match){ + pred.w = l.biases[2*n]/l.w; + pred.h = l.biases[2*n+1]/l.h; + } + pred.x = 0; + pred.y = 0; + float iou = box_iou(pred, truth_shift); + if (iou > best_iou){ + best_iou = iou; + best_n = n; + } + } + + int box_index = entry_index(l, b, best_n*l.w*l.h + j*l.w + i, 0); + float iou = delta_region_box(truth, l.output, l.biases, best_n, box_index, i, j, l.w, l.h, l.delta, l.coord_scale * (2 - truth.w*truth.h), l.w*l.h); + if(l.coords > 4){ + int mask_index = entry_index(l, b, best_n*l.w*l.h + j*l.w + i, 4); + delta_region_mask(net.truth + t*(l.coords + 1) + b*l.truths + 5, l.output, l.coords - 4, mask_index, l.delta, l.w*l.h, l.mask_scale); + } + if(iou > .5) recall += 1; + avg_iou += iou; + + int obj_index = entry_index(l, b, best_n*l.w*l.h + j*l.w + i, l.coords); + avg_obj += l.output[obj_index]; + l.delta[obj_index] = l.object_scale * (1 - l.output[obj_index]); + if (l.rescore) { + l.delta[obj_index] = l.object_scale * (iou - l.output[obj_index]); + } + if(l.background){ + l.delta[obj_index] = l.object_scale * (0 - l.output[obj_index]); + } + + int class = net.truth[t*(l.coords + 1) + b*l.truths + l.coords]; + if (l.map) class = l.map[class]; + int class_index = entry_index(l, b, best_n*l.w*l.h + j*l.w + i, l.coords + 1); + delta_region_class(l.output, l.delta, class_index, class, l.classes, l.softmax_tree, l.class_scale, l.w*l.h, &avg_cat, !l.softmax); + ++count; + ++class_count; + } + } + *(l.cost) = pow(mag_array(l.delta, l.outputs * l.batch), 2); + printf("Region Avg IOU: %f, Class: %f, Obj: %f, No Obj: %f, Avg Recall: %f, count: %d\n", avg_iou/count, avg_cat/class_count, avg_obj/count, avg_anyobj/(l.w*l.h*l.n*l.batch), recall/count, count); +} + +void backward_region_layer(const layer l, network net) +{ + /* + int b; + int size = l.coords + l.classes + 1; + for (b = 0; b < l.batch*l.n; ++b){ + int index = (b*size + 4)*l.w*l.h; + gradient_array(l.output + index, l.w*l.h, LOGISTIC, l.delta + index); + } + axpy_cpu(l.batch*l.inputs, 1, l.delta, 1, net.delta, 1); + */ +} + +void correct_region_boxes(detection *dets, int n, int w, int h, int netw, int neth, int relative) +{ + int i; + int new_w=0; + int new_h=0; + if (((float)netw/w) < ((float)neth/h)) { + new_w = netw; + new_h = (h * netw)/w; + } else { + new_h = neth; + new_w = (w * neth)/h; + } + for (i = 0; i < n; ++i){ + box b = dets[i].bbox; + b.x = (b.x - (netw - new_w)/2./netw) / ((float)new_w/netw); + b.y = (b.y - (neth - new_h)/2./neth) / ((float)new_h/neth); + b.w *= (float)netw/new_w; + b.h *= (float)neth/new_h; + if(!relative){ + b.x *= w; + b.w *= w; + b.y *= h; + b.h *= h; + } + dets[i].bbox = b; + } +} + +void get_region_detections(layer l, int w, int h, int netw, int neth, float thresh, int *map, float tree_thresh, int relative, detection *dets) +{ + int i,j,n,z; + float *predictions = l.output; + if (l.batch == 2) { + float *flip = l.output + l.outputs; + for (j = 0; j < l.h; ++j) { + for (i = 0; i < l.w/2; ++i) { + for (n = 0; n < l.n; ++n) { + for(z = 0; z < l.classes + l.coords + 1; ++z){ + int i1 = z*l.w*l.h*l.n + n*l.w*l.h + j*l.w + i; + int i2 = z*l.w*l.h*l.n + n*l.w*l.h + j*l.w + (l.w - i - 1); + float swap = flip[i1]; + flip[i1] = flip[i2]; + flip[i2] = swap; + if(z == 0){ + flip[i1] = -flip[i1]; + flip[i2] = -flip[i2]; + } + } + } + } + } + for(i = 0; i < l.outputs; ++i){ + l.output[i] = (l.output[i] + flip[i])/2.; + } + } + for (i = 0; i < l.w*l.h; ++i){ + int row = i / l.w; + int col = i % l.w; + for(n = 0; n < l.n; ++n){ + int index = n*l.w*l.h + i; + for(j = 0; j < l.classes; ++j){ + dets[index].prob[j] = 0; + } + int obj_index = entry_index(l, 0, n*l.w*l.h + i, l.coords); + int box_index = entry_index(l, 0, n*l.w*l.h + i, 0); + int mask_index = entry_index(l, 0, n*l.w*l.h + i, 4); + float scale = l.background ? 1 : predictions[obj_index]; + dets[index].bbox = get_region_box(predictions, l.biases, n, box_index, col, row, l.w, l.h, l.w*l.h); + dets[index].objectness = scale > thresh ? scale : 0; + if(dets[index].mask){ + for(j = 0; j < l.coords - 4; ++j){ + dets[index].mask[j] = l.output[mask_index + j*l.w*l.h]; + } + } + + int class_index = entry_index(l, 0, n*l.w*l.h + i, l.coords + !l.background); + if(l.softmax_tree){ + + hierarchy_predictions(predictions + class_index, l.classes, l.softmax_tree, 0, l.w*l.h); + if(map){ + for(j = 0; j < 200; ++j){ + int class_index = entry_index(l, 0, n*l.w*l.h + i, l.coords + 1 + map[j]); + float prob = scale*predictions[class_index]; + dets[index].prob[j] = (prob > thresh) ? prob : 0; + } + } else { + int j = hierarchy_top_prediction(predictions + class_index, l.softmax_tree, tree_thresh, l.w*l.h); + dets[index].prob[j] = (scale > thresh) ? scale : 0; + } + } else { + if(dets[index].objectness){ + for(j = 0; j < l.classes; ++j){ + int class_index = entry_index(l, 0, n*l.w*l.h + i, l.coords + 1 + j); + float prob = scale*predictions[class_index]; + dets[index].prob[j] = (prob > thresh) ? prob : 0; + } + } + } + } + } + correct_region_boxes(dets, l.w*l.h*l.n, w, h, netw, neth, relative); +} + +#ifdef GPU + +void forward_region_layer_gpu(const layer l, network net) +{ + copy_gpu(l.batch*l.inputs, net.input_gpu, 1, l.output_gpu, 1); + int b, n; + for (b = 0; b < l.batch; ++b){ + for(n = 0; n < l.n; ++n){ + int index = entry_index(l, b, n*l.w*l.h, 0); + activate_array_gpu(l.output_gpu + index, 2*l.w*l.h, LOGISTIC); + if(l.coords > 4){ + index = entry_index(l, b, n*l.w*l.h, 4); + activate_array_gpu(l.output_gpu + index, (l.coords - 4)*l.w*l.h, LOGISTIC); + } + index = entry_index(l, b, n*l.w*l.h, l.coords); + if(!l.background) activate_array_gpu(l.output_gpu + index, l.w*l.h, LOGISTIC); + index = entry_index(l, b, n*l.w*l.h, l.coords + 1); + if(!l.softmax && !l.softmax_tree) activate_array_gpu(l.output_gpu + index, l.classes*l.w*l.h, LOGISTIC); + } + } + if (l.softmax_tree){ + int index = entry_index(l, 0, 0, l.coords + 1); + softmax_tree(net.input_gpu + index, l.w*l.h, l.batch*l.n, l.inputs/l.n, 1, l.output_gpu + index, *l.softmax_tree); + } else if (l.softmax) { + int index = entry_index(l, 0, 0, l.coords + !l.background); + softmax_gpu(net.input_gpu + index, l.classes + l.background, l.batch*l.n, l.inputs/l.n, l.w*l.h, 1, l.w*l.h, 1, l.output_gpu + index); + } + if(!net.train || l.onlyforward){ + cuda_pull_array(l.output_gpu, l.output, l.batch*l.outputs); + return; + } + + cuda_pull_array(l.output_gpu, net.input, l.batch*l.inputs); + forward_region_layer(l, net); + //cuda_push_array(l.output_gpu, l.output, l.batch*l.outputs); + if(!net.train) return; + cuda_push_array(l.delta_gpu, l.delta, l.batch*l.outputs); +} + +void backward_region_layer_gpu(const layer l, network net) +{ + int b, n; + for (b = 0; b < l.batch; ++b){ + for(n = 0; n < l.n; ++n){ + int index = entry_index(l, b, n*l.w*l.h, 0); + gradient_array_gpu(l.output_gpu + index, 2*l.w*l.h, LOGISTIC, l.delta_gpu + index); + if(l.coords > 4){ + index = entry_index(l, b, n*l.w*l.h, 4); + gradient_array_gpu(l.output_gpu + index, (l.coords - 4)*l.w*l.h, LOGISTIC, l.delta_gpu + index); + } + index = entry_index(l, b, n*l.w*l.h, l.coords); + if(!l.background) gradient_array_gpu(l.output_gpu + index, l.w*l.h, LOGISTIC, l.delta_gpu + index); + } + } + axpy_gpu(l.batch*l.inputs, 1, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif + +void zero_objectness(layer l) +{ + int i, n; + for (i = 0; i < l.w*l.h; ++i){ + for(n = 0; n < l.n; ++n){ + int obj_index = entry_index(l, 0, n*l.w*l.h + i, l.coords); + l.output[obj_index] = 0; + } + } +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/region_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/region_layer.h" new file mode 100644 index 00000000..9f12fd18 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/region_layer.h" @@ -0,0 +1,18 @@ +#ifndef REGION_LAYER_H +#define REGION_LAYER_H + +#include "darknet.h" +#include "layer.h" +#include "network.h" + +layer make_region_layer(int batch, int w, int h, int n, int classes, int coords); +void forward_region_layer(const layer l, network net); +void backward_region_layer(const layer l, network net); +void resize_region_layer(layer *l, int w, int h); + +#ifdef GPU +void forward_region_layer_gpu(const layer l, network net); +void backward_region_layer_gpu(layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/reorg_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/reorg_layer.c" new file mode 100644 index 00000000..31d6b843 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/reorg_layer.c" @@ -0,0 +1,173 @@ +#include "reorg_layer.h" +#include "cuda.h" +#include "blas.h" + +#include + + +layer make_reorg_layer(int batch, int w, int h, int c, int stride, int reverse, int flatten, int extra) +{ + layer l = {0}; + l.type = REORG; + l.batch = batch; + l.stride = stride; + l.extra = extra; + l.h = h; + l.w = w; + l.c = c; + l.flatten = flatten; + if(reverse){ + l.out_w = w*stride; + l.out_h = h*stride; + l.out_c = c/(stride*stride); + }else{ + l.out_w = w/stride; + l.out_h = h/stride; + l.out_c = c*(stride*stride); + } + l.reverse = reverse; + + l.outputs = l.out_h * l.out_w * l.out_c; + l.inputs = h*w*c; + if(l.extra){ + l.out_w = l.out_h = l.out_c = 0; + l.outputs = l.inputs + l.extra; + } + + if(extra){ + fprintf(stderr, "reorg %4d -> %4d\n", l.inputs, l.outputs); + } else { + fprintf(stderr, "reorg /%2d %4d x%4d x%4d -> %4d x%4d x%4d\n", stride, w, h, c, l.out_w, l.out_h, l.out_c); + } + int output_size = l.outputs * batch; + l.output = calloc(output_size, sizeof(float)); + l.delta = calloc(output_size, sizeof(float)); + + l.forward = forward_reorg_layer; + l.backward = backward_reorg_layer; +#ifdef GPU + l.forward_gpu = forward_reorg_layer_gpu; + l.backward_gpu = backward_reorg_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, output_size); + l.delta_gpu = cuda_make_array(l.delta, output_size); +#endif + return l; +} + +void resize_reorg_layer(layer *l, int w, int h) +{ + int stride = l->stride; + int c = l->c; + + l->h = h; + l->w = w; + + if(l->reverse){ + l->out_w = w*stride; + l->out_h = h*stride; + l->out_c = c/(stride*stride); + }else{ + l->out_w = w/stride; + l->out_h = h/stride; + l->out_c = c*(stride*stride); + } + + l->outputs = l->out_h * l->out_w * l->out_c; + l->inputs = l->outputs; + int output_size = l->outputs * l->batch; + + l->output = realloc(l->output, output_size * sizeof(float)); + l->delta = realloc(l->delta, output_size * sizeof(float)); + +#ifdef GPU + cuda_free(l->output_gpu); + cuda_free(l->delta_gpu); + l->output_gpu = cuda_make_array(l->output, output_size); + l->delta_gpu = cuda_make_array(l->delta, output_size); +#endif +} + +void forward_reorg_layer(const layer l, network net) +{ + int i; + if(l.flatten){ + memcpy(l.output, net.input, l.outputs*l.batch*sizeof(float)); + if(l.reverse){ + flatten(l.output, l.w*l.h, l.c, l.batch, 0); + }else{ + flatten(l.output, l.w*l.h, l.c, l.batch, 1); + } + } else if (l.extra) { + for(i = 0; i < l.batch; ++i){ + copy_cpu(l.inputs, net.input + i*l.inputs, 1, l.output + i*l.outputs, 1); + } + } else if (l.reverse){ + reorg_cpu(net.input, l.w, l.h, l.c, l.batch, l.stride, 1, l.output); + } else { + reorg_cpu(net.input, l.w, l.h, l.c, l.batch, l.stride, 0, l.output); + } +} + +void backward_reorg_layer(const layer l, network net) +{ + int i; + if(l.flatten){ + memcpy(net.delta, l.delta, l.outputs*l.batch*sizeof(float)); + if(l.reverse){ + flatten(net.delta, l.w*l.h, l.c, l.batch, 1); + }else{ + flatten(net.delta, l.w*l.h, l.c, l.batch, 0); + } + } else if(l.reverse){ + reorg_cpu(l.delta, l.w, l.h, l.c, l.batch, l.stride, 0, net.delta); + } else if (l.extra) { + for(i = 0; i < l.batch; ++i){ + copy_cpu(l.inputs, l.delta + i*l.outputs, 1, net.delta + i*l.inputs, 1); + } + }else{ + reorg_cpu(l.delta, l.w, l.h, l.c, l.batch, l.stride, 1, net.delta); + } +} + +#ifdef GPU +void forward_reorg_layer_gpu(layer l, network net) +{ + int i; + if(l.flatten){ + if(l.reverse){ + flatten_gpu(net.input_gpu, l.w*l.h, l.c, l.batch, 0, l.output_gpu); + }else{ + flatten_gpu(net.input_gpu, l.w*l.h, l.c, l.batch, 1, l.output_gpu); + } + } else if (l.extra) { + for(i = 0; i < l.batch; ++i){ + copy_gpu(l.inputs, net.input_gpu + i*l.inputs, 1, l.output_gpu + i*l.outputs, 1); + } + } else if (l.reverse) { + reorg_gpu(net.input_gpu, l.w, l.h, l.c, l.batch, l.stride, 1, l.output_gpu); + }else { + reorg_gpu(net.input_gpu, l.w, l.h, l.c, l.batch, l.stride, 0, l.output_gpu); + } +} + +void backward_reorg_layer_gpu(layer l, network net) +{ + if(l.flatten){ + if(l.reverse){ + flatten_gpu(l.delta_gpu, l.w*l.h, l.c, l.batch, 1, net.delta_gpu); + }else{ + flatten_gpu(l.delta_gpu, l.w*l.h, l.c, l.batch, 0, net.delta_gpu); + } + } else if (l.extra) { + int i; + for(i = 0; i < l.batch; ++i){ + copy_gpu(l.inputs, l.delta_gpu + i*l.outputs, 1, net.delta_gpu + i*l.inputs, 1); + } + } else if(l.reverse){ + reorg_gpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 0, net.delta_gpu); + } else { + reorg_gpu(l.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 1, net.delta_gpu); + } +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/reorg_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/reorg_layer.h" new file mode 100644 index 00000000..e6513a5f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/reorg_layer.h" @@ -0,0 +1,20 @@ +#ifndef REORG_LAYER_H +#define REORG_LAYER_H + +#include "image.h" +#include "cuda.h" +#include "layer.h" +#include "network.h" + +layer make_reorg_layer(int batch, int w, int h, int c, int stride, int reverse, int flatten, int extra); +void resize_reorg_layer(layer *l, int w, int h); +void forward_reorg_layer(const layer l, network net); +void backward_reorg_layer(const layer l, network net); + +#ifdef GPU +void forward_reorg_layer_gpu(layer l, network net); +void backward_reorg_layer_gpu(layer l, network net); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/rnn_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/rnn_layer.c" new file mode 100644 index 00000000..8c9b457e --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/rnn_layer.c" @@ -0,0 +1,292 @@ +#include "rnn_layer.h" +#include "connected_layer.h" +#include "utils.h" +#include "cuda.h" +#include "blas.h" +#include "gemm.h" + +#include +#include +#include +#include + +static void increment_layer(layer *l, int steps) +{ + int num = l->outputs*l->batch*steps; + l->output += num; + l->delta += num; + l->x += num; + l->x_norm += num; + +#ifdef GPU + l->output_gpu += num; + l->delta_gpu += num; + l->x_gpu += num; + l->x_norm_gpu += num; +#endif +} + +layer make_rnn_layer(int batch, int inputs, int outputs, int steps, ACTIVATION activation, int batch_normalize, int adam) +{ + fprintf(stderr, "RNN Layer: %d inputs, %d outputs\n", inputs, outputs); + batch = batch / steps; + layer l = {0}; + l.batch = batch; + l.type = RNN; + l.steps = steps; + l.inputs = inputs; + + l.state = calloc(batch*outputs, sizeof(float)); + l.prev_state = calloc(batch*outputs, sizeof(float)); + + l.input_layer = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.input_layer) = make_connected_layer(batch*steps, inputs, outputs, activation, batch_normalize, adam); + l.input_layer->batch = batch; + + l.self_layer = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.self_layer) = make_connected_layer(batch*steps, outputs, outputs, activation, batch_normalize, adam); + l.self_layer->batch = batch; + + l.output_layer = malloc(sizeof(layer)); + fprintf(stderr, "\t\t"); + *(l.output_layer) = make_connected_layer(batch*steps, outputs, outputs, activation, batch_normalize, adam); + l.output_layer->batch = batch; + + l.outputs = outputs; + l.output = l.output_layer->output; + l.delta = l.output_layer->delta; + + l.forward = forward_rnn_layer; + l.backward = backward_rnn_layer; + l.update = update_rnn_layer; +#ifdef GPU + l.forward_gpu = forward_rnn_layer_gpu; + l.backward_gpu = backward_rnn_layer_gpu; + l.update_gpu = update_rnn_layer_gpu; + l.state_gpu = cuda_make_array(0, batch*outputs); + l.prev_state_gpu = cuda_make_array(0, batch*outputs); + l.output_gpu = l.output_layer->output_gpu; + l.delta_gpu = l.output_layer->delta_gpu; +#ifdef CUDNN + cudnnSetTensor4dDescriptor(l.input_layer->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.input_layer->out_c, l.input_layer->out_h, l.input_layer->out_w); + cudnnSetTensor4dDescriptor(l.self_layer->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.self_layer->out_c, l.self_layer->out_h, l.self_layer->out_w); + cudnnSetTensor4dDescriptor(l.output_layer->dstTensorDesc, CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, batch, l.output_layer->out_c, l.output_layer->out_h, l.output_layer->out_w); +#endif +#endif + + return l; +} + +void update_rnn_layer(layer l, update_args a) +{ + update_connected_layer(*(l.input_layer), a); + update_connected_layer(*(l.self_layer), a); + update_connected_layer(*(l.output_layer), a); +} + +void forward_rnn_layer(layer l, network net) +{ + network s = net; + s.train = net.train; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + + fill_cpu(l.outputs * l.batch * l.steps, 0, output_layer.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, self_layer.delta, 1); + fill_cpu(l.outputs * l.batch * l.steps, 0, input_layer.delta, 1); + if(net.train) fill_cpu(l.outputs * l.batch, 0, l.state, 1); + + for (i = 0; i < l.steps; ++i) { + s.input = net.input; + forward_connected_layer(input_layer, s); + + s.input = l.state; + forward_connected_layer(self_layer, s); + + float *old_state = l.state; + if(net.train) l.state += l.outputs*l.batch; + if(l.shortcut){ + copy_cpu(l.outputs * l.batch, old_state, 1, l.state, 1); + }else{ + fill_cpu(l.outputs * l.batch, 0, l.state, 1); + } + axpy_cpu(l.outputs * l.batch, 1, input_layer.output, 1, l.state, 1); + axpy_cpu(l.outputs * l.batch, 1, self_layer.output, 1, l.state, 1); + + s.input = l.state; + forward_connected_layer(output_layer, s); + + net.input += l.inputs*l.batch; + increment_layer(&input_layer, 1); + increment_layer(&self_layer, 1); + increment_layer(&output_layer, 1); + } +} + +void backward_rnn_layer(layer l, network net) +{ + network s = net; + s.train = net.train; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + + increment_layer(&input_layer, l.steps-1); + increment_layer(&self_layer, l.steps-1); + increment_layer(&output_layer, l.steps-1); + + l.state += l.outputs*l.batch*l.steps; + for (i = l.steps-1; i >= 0; --i) { + copy_cpu(l.outputs * l.batch, input_layer.output, 1, l.state, 1); + axpy_cpu(l.outputs * l.batch, 1, self_layer.output, 1, l.state, 1); + + s.input = l.state; + s.delta = self_layer.delta; + backward_connected_layer(output_layer, s); + + l.state -= l.outputs*l.batch; + /* + if(i > 0){ + copy_cpu(l.outputs * l.batch, input_layer.output - l.outputs*l.batch, 1, l.state, 1); + axpy_cpu(l.outputs * l.batch, 1, self_layer.output - l.outputs*l.batch, 1, l.state, 1); + }else{ + fill_cpu(l.outputs * l.batch, 0, l.state, 1); + } + */ + + s.input = l.state; + s.delta = self_layer.delta - l.outputs*l.batch; + if (i == 0) s.delta = 0; + backward_connected_layer(self_layer, s); + + copy_cpu(l.outputs*l.batch, self_layer.delta, 1, input_layer.delta, 1); + if (i > 0 && l.shortcut) axpy_cpu(l.outputs*l.batch, 1, self_layer.delta, 1, self_layer.delta - l.outputs*l.batch, 1); + s.input = net.input + i*l.inputs*l.batch; + if(net.delta) s.delta = net.delta + i*l.inputs*l.batch; + else s.delta = 0; + backward_connected_layer(input_layer, s); + + increment_layer(&input_layer, -1); + increment_layer(&self_layer, -1); + increment_layer(&output_layer, -1); + } +} + +#ifdef GPU + +void pull_rnn_layer(layer l) +{ + pull_connected_layer(*(l.input_layer)); + pull_connected_layer(*(l.self_layer)); + pull_connected_layer(*(l.output_layer)); +} + +void push_rnn_layer(layer l) +{ + push_connected_layer(*(l.input_layer)); + push_connected_layer(*(l.self_layer)); + push_connected_layer(*(l.output_layer)); +} + +void update_rnn_layer_gpu(layer l, update_args a) +{ + update_connected_layer_gpu(*(l.input_layer), a); + update_connected_layer_gpu(*(l.self_layer), a); + update_connected_layer_gpu(*(l.output_layer), a); +} + +void forward_rnn_layer_gpu(layer l, network net) +{ + network s = {0}; + s.train = net.train; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + + fill_gpu(l.outputs * l.batch * l.steps, 0, output_layer.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, self_layer.delta_gpu, 1); + fill_gpu(l.outputs * l.batch * l.steps, 0, input_layer.delta_gpu, 1); + + if(net.train) { + fill_gpu(l.outputs * l.batch * l.steps, 0, l.delta_gpu, 1); + copy_gpu(l.outputs*l.batch, l.state_gpu, 1, l.prev_state_gpu, 1); + } + + for (i = 0; i < l.steps; ++i) { + s.input_gpu = net.input_gpu; + forward_connected_layer_gpu(input_layer, s); + + s.input_gpu = l.state_gpu; + forward_connected_layer_gpu(self_layer, s); + + fill_gpu(l.outputs * l.batch, 0, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, input_layer.output_gpu, 1, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, self_layer.output_gpu, 1, l.state_gpu, 1); + + s.input_gpu = l.state_gpu; + forward_connected_layer_gpu(output_layer, s); + + net.input_gpu += l.inputs*l.batch; + increment_layer(&input_layer, 1); + increment_layer(&self_layer, 1); + increment_layer(&output_layer, 1); + } +} + +void backward_rnn_layer_gpu(layer l, network net) +{ + network s = {0}; + s.train = net.train; + int i; + layer input_layer = *(l.input_layer); + layer self_layer = *(l.self_layer); + layer output_layer = *(l.output_layer); + increment_layer(&input_layer, l.steps - 1); + increment_layer(&self_layer, l.steps - 1); + increment_layer(&output_layer, l.steps - 1); + float *last_input = input_layer.output_gpu; + float *last_self = self_layer.output_gpu; + for (i = l.steps-1; i >= 0; --i) { + fill_gpu(l.outputs * l.batch, 0, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, input_layer.output_gpu, 1, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, self_layer.output_gpu, 1, l.state_gpu, 1); + + s.input_gpu = l.state_gpu; + s.delta_gpu = self_layer.delta_gpu; + backward_connected_layer_gpu(output_layer, s); + + if(i != 0) { + fill_gpu(l.outputs * l.batch, 0, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, input_layer.output_gpu - l.outputs*l.batch, 1, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, self_layer.output_gpu - l.outputs*l.batch, 1, l.state_gpu, 1); + }else { + copy_gpu(l.outputs*l.batch, l.prev_state_gpu, 1, l.state_gpu, 1); + } + + copy_gpu(l.outputs*l.batch, self_layer.delta_gpu, 1, input_layer.delta_gpu, 1); + + s.input_gpu = l.state_gpu; + s.delta_gpu = (i > 0) ? self_layer.delta_gpu - l.outputs*l.batch : 0; + if (i == 0) s.delta_gpu = 0; + backward_connected_layer_gpu(self_layer, s); + + s.input_gpu = net.input_gpu + i*l.inputs*l.batch; + if(net.delta_gpu) s.delta_gpu = net.delta_gpu + i*l.inputs*l.batch; + else s.delta_gpu = 0; + backward_connected_layer_gpu(input_layer, s); + + increment_layer(&input_layer, -1); + increment_layer(&self_layer, -1); + increment_layer(&output_layer, -1); + } + fill_gpu(l.outputs * l.batch, 0, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, last_input, 1, l.state_gpu, 1); + axpy_gpu(l.outputs * l.batch, 1, last_self, 1, l.state_gpu, 1); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/rnn_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/rnn_layer.h" new file mode 100644 index 00000000..270a63ff --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/rnn_layer.h" @@ -0,0 +1,25 @@ + +#ifndef RNN_LAYER_H +#define RNN_LAYER_H + +#include "activations.h" +#include "layer.h" +#include "network.h" +#define USET + +layer make_rnn_layer(int batch, int inputs, int outputs, int steps, ACTIVATION activation, int batch_normalize, int adam); + +void forward_rnn_layer(layer l, network net); +void backward_rnn_layer(layer l, network net); +void update_rnn_layer(layer l, update_args a); + +#ifdef GPU +void forward_rnn_layer_gpu(layer l, network net); +void backward_rnn_layer_gpu(layer l, network net); +void update_rnn_layer_gpu(layer l, update_args a); +void push_rnn_layer(layer l); +void pull_rnn_layer(layer l); +#endif + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/route_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/route_layer.c" new file mode 100644 index 00000000..a8970a46 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/route_layer.c" @@ -0,0 +1,134 @@ +#include "route_layer.h" +#include "cuda.h" +#include "blas.h" + +#include + +route_layer make_route_layer(int batch, int n, int *input_layers, int *input_sizes) +{ + fprintf(stderr,"route "); + route_layer l = {0}; + l.type = ROUTE; + l.batch = batch; + l.n = n; + l.input_layers = input_layers; + l.input_sizes = input_sizes; + int i; + int outputs = 0; + for(i = 0; i < n; ++i){ + fprintf(stderr," %d", input_layers[i]); + outputs += input_sizes[i]; + } + fprintf(stderr, "\n"); + l.outputs = outputs; + l.inputs = outputs; + l.delta = calloc(outputs*batch, sizeof(float)); + l.output = calloc(outputs*batch, sizeof(float));; + + l.forward = forward_route_layer; + l.backward = backward_route_layer; + #ifdef GPU + l.forward_gpu = forward_route_layer_gpu; + l.backward_gpu = backward_route_layer_gpu; + + l.delta_gpu = cuda_make_array(l.delta, outputs*batch); + l.output_gpu = cuda_make_array(l.output, outputs*batch); + #endif + return l; +} + +void resize_route_layer(route_layer *l, network *net) +{ + int i; + layer first = net->layers[l->input_layers[0]]; + l->out_w = first.out_w; + l->out_h = first.out_h; + l->out_c = first.out_c; + l->outputs = first.outputs; + l->input_sizes[0] = first.outputs; + for(i = 1; i < l->n; ++i){ + int index = l->input_layers[i]; + layer next = net->layers[index]; + l->outputs += next.outputs; + l->input_sizes[i] = next.outputs; + if(next.out_w == first.out_w && next.out_h == first.out_h){ + l->out_c += next.out_c; + }else{ + printf("%d %d, %d %d\n", next.out_w, next.out_h, first.out_w, first.out_h); + l->out_h = l->out_w = l->out_c = 0; + } + } + l->inputs = l->outputs; + l->delta = realloc(l->delta, l->outputs*l->batch*sizeof(float)); + l->output = realloc(l->output, l->outputs*l->batch*sizeof(float)); + +#ifdef GPU + cuda_free(l->output_gpu); + cuda_free(l->delta_gpu); + l->output_gpu = cuda_make_array(l->output, l->outputs*l->batch); + l->delta_gpu = cuda_make_array(l->delta, l->outputs*l->batch); +#endif + +} + +void forward_route_layer(const route_layer l, network net) +{ + int i, j; + int offset = 0; + for(i = 0; i < l.n; ++i){ + int index = l.input_layers[i]; + float *input = net.layers[index].output; + int input_size = l.input_sizes[i]; + for(j = 0; j < l.batch; ++j){ + copy_cpu(input_size, input + j*input_size, 1, l.output + offset + j*l.outputs, 1); + } + offset += input_size; + } +} + +void backward_route_layer(const route_layer l, network net) +{ + int i, j; + int offset = 0; + for(i = 0; i < l.n; ++i){ + int index = l.input_layers[i]; + float *delta = net.layers[index].delta; + int input_size = l.input_sizes[i]; + for(j = 0; j < l.batch; ++j){ + axpy_cpu(input_size, 1, l.delta + offset + j*l.outputs, 1, delta + j*input_size, 1); + } + offset += input_size; + } +} + +#ifdef GPU +void forward_route_layer_gpu(const route_layer l, network net) +{ + int i, j; + int offset = 0; + for(i = 0; i < l.n; ++i){ + int index = l.input_layers[i]; + float *input = net.layers[index].output_gpu; + int input_size = l.input_sizes[i]; + for(j = 0; j < l.batch; ++j){ + copy_gpu(input_size, input + j*input_size, 1, l.output_gpu + offset + j*l.outputs, 1); + } + offset += input_size; + } +} + +void backward_route_layer_gpu(const route_layer l, network net) +{ + int i, j; + int offset = 0; + for(i = 0; i < l.n; ++i){ + int index = l.input_layers[i]; + float *delta = net.layers[index].delta_gpu; + int input_size = l.input_sizes[i]; + for(j = 0; j < l.batch; ++j){ + axpy_gpu(input_size, 1, l.delta_gpu + offset + j*l.outputs, 1, delta + j*input_size, 1); + } + offset += input_size; + } +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/route_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/route_layer.h" new file mode 100644 index 00000000..1d40330f --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/route_layer.h" @@ -0,0 +1,18 @@ +#ifndef ROUTE_LAYER_H +#define ROUTE_LAYER_H +#include "network.h" +#include "layer.h" + +typedef layer route_layer; + +route_layer make_route_layer(int batch, int n, int *input_layers, int *input_size); +void forward_route_layer(const route_layer l, network net); +void backward_route_layer(const route_layer l, network net); +void resize_route_layer(route_layer *l, network *net); + +#ifdef GPU +void forward_route_layer_gpu(const route_layer l, network net); +void backward_route_layer_gpu(const route_layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/shortcut_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/shortcut_layer.c" new file mode 100644 index 00000000..49d17f56 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/shortcut_layer.c" @@ -0,0 +1,90 @@ +#include "shortcut_layer.h" +#include "cuda.h" +#include "blas.h" +#include "activations.h" + +#include +#include + +layer make_shortcut_layer(int batch, int index, int w, int h, int c, int w2, int h2, int c2) +{ + fprintf(stderr, "res %3d %4d x%4d x%4d -> %4d x%4d x%4d\n",index, w2,h2,c2, w,h,c); + layer l = {0}; + l.type = SHORTCUT; + l.batch = batch; + l.w = w2; + l.h = h2; + l.c = c2; + l.out_w = w; + l.out_h = h; + l.out_c = c; + l.outputs = w*h*c; + l.inputs = l.outputs; + + l.index = index; + + l.delta = calloc(l.outputs*batch, sizeof(float)); + l.output = calloc(l.outputs*batch, sizeof(float));; + + l.forward = forward_shortcut_layer; + l.backward = backward_shortcut_layer; + #ifdef GPU + l.forward_gpu = forward_shortcut_layer_gpu; + l.backward_gpu = backward_shortcut_layer_gpu; + + l.delta_gpu = cuda_make_array(l.delta, l.outputs*batch); + l.output_gpu = cuda_make_array(l.output, l.outputs*batch); + #endif + return l; +} + +void resize_shortcut_layer(layer *l, int w, int h) +{ + assert(l->w == l->out_w); + assert(l->h == l->out_h); + l->w = l->out_w = w; + l->h = l->out_h = h; + l->outputs = w*h*l->out_c; + l->inputs = l->outputs; + l->delta = realloc(l->delta, l->outputs*l->batch*sizeof(float)); + l->output = realloc(l->output, l->outputs*l->batch*sizeof(float)); + +#ifdef GPU + cuda_free(l->output_gpu); + cuda_free(l->delta_gpu); + l->output_gpu = cuda_make_array(l->output, l->outputs*l->batch); + l->delta_gpu = cuda_make_array(l->delta, l->outputs*l->batch); +#endif + +} + + +void forward_shortcut_layer(const layer l, network net) +{ + copy_cpu(l.outputs*l.batch, net.input, 1, l.output, 1); + shortcut_cpu(l.batch, l.w, l.h, l.c, net.layers[l.index].output, l.out_w, l.out_h, l.out_c, l.alpha, l.beta, l.output); + activate_array(l.output, l.outputs*l.batch, l.activation); +} + +void backward_shortcut_layer(const layer l, network net) +{ + gradient_array(l.output, l.outputs*l.batch, l.activation, l.delta); + axpy_cpu(l.outputs*l.batch, l.alpha, l.delta, 1, net.delta, 1); + shortcut_cpu(l.batch, l.out_w, l.out_h, l.out_c, l.delta, l.w, l.h, l.c, 1, l.beta, net.layers[l.index].delta); +} + +#ifdef GPU +void forward_shortcut_layer_gpu(const layer l, network net) +{ + copy_gpu(l.outputs*l.batch, net.input_gpu, 1, l.output_gpu, 1); + shortcut_gpu(l.batch, l.w, l.h, l.c, net.layers[l.index].output_gpu, l.out_w, l.out_h, l.out_c, l.alpha, l.beta, l.output_gpu); + activate_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation); +} + +void backward_shortcut_layer_gpu(const layer l, network net) +{ + gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); + axpy_gpu(l.outputs*l.batch, l.alpha, l.delta_gpu, 1, net.delta_gpu, 1); + shortcut_gpu(l.batch, l.out_w, l.out_h, l.out_c, l.delta_gpu, l.w, l.h, l.c, 1, l.beta, net.layers[l.index].delta_gpu); +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/shortcut_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/shortcut_layer.h" new file mode 100644 index 00000000..5f684fc1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/shortcut_layer.h" @@ -0,0 +1,17 @@ +#ifndef SHORTCUT_LAYER_H +#define SHORTCUT_LAYER_H + +#include "layer.h" +#include "network.h" + +layer make_shortcut_layer(int batch, int index, int w, int h, int c, int w2, int h2, int c2); +void forward_shortcut_layer(const layer l, network net); +void backward_shortcut_layer(const layer l, network net); +void resize_shortcut_layer(layer *l, int w, int h); + +#ifdef GPU +void forward_shortcut_layer_gpu(const layer l, network net); +void backward_shortcut_layer_gpu(const layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/softmax_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/softmax_layer.c" new file mode 100644 index 00000000..9cbc6be1 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/softmax_layer.c" @@ -0,0 +1,107 @@ +#include "softmax_layer.h" +#include "blas.h" +#include "cuda.h" + +#include +#include +#include +#include +#include + +softmax_layer make_softmax_layer(int batch, int inputs, int groups) +{ + assert(inputs%groups == 0); + fprintf(stderr, "softmax %4d\n", inputs); + softmax_layer l = {0}; + l.type = SOFTMAX; + l.batch = batch; + l.groups = groups; + l.inputs = inputs; + l.outputs = inputs; + l.loss = calloc(inputs*batch, sizeof(float)); + l.output = calloc(inputs*batch, sizeof(float)); + l.delta = calloc(inputs*batch, sizeof(float)); + l.cost = calloc(1, sizeof(float)); + + l.forward = forward_softmax_layer; + l.backward = backward_softmax_layer; + #ifdef GPU + l.forward_gpu = forward_softmax_layer_gpu; + l.backward_gpu = backward_softmax_layer_gpu; + + l.output_gpu = cuda_make_array(l.output, inputs*batch); + l.loss_gpu = cuda_make_array(l.loss, inputs*batch); + l.delta_gpu = cuda_make_array(l.delta, inputs*batch); + #endif + return l; +} + +void forward_softmax_layer(const softmax_layer l, network net) +{ + if(l.softmax_tree){ + int i; + int count = 0; + for (i = 0; i < l.softmax_tree->groups; ++i) { + int group_size = l.softmax_tree->group_size[i]; + softmax_cpu(net.input + count, group_size, l.batch, l.inputs, 1, 0, 1, l.temperature, l.output + count); + count += group_size; + } + } else { + softmax_cpu(net.input, l.inputs/l.groups, l.batch, l.inputs, l.groups, l.inputs/l.groups, 1, l.temperature, l.output); + } + + if(net.truth && !l.noloss){ + softmax_x_ent_cpu(l.batch*l.inputs, l.output, net.truth, l.delta, l.loss); + l.cost[0] = sum_array(l.loss, l.batch*l.inputs); + } +} + +void backward_softmax_layer(const softmax_layer l, network net) +{ + axpy_cpu(l.inputs*l.batch, 1, l.delta, 1, net.delta, 1); +} + +#ifdef GPU + +void pull_softmax_layer_output(const softmax_layer layer) +{ + cuda_pull_array(layer.output_gpu, layer.output, layer.inputs*layer.batch); +} + +void forward_softmax_layer_gpu(const softmax_layer l, network net) +{ + if(l.softmax_tree){ + softmax_tree(net.input_gpu, 1, l.batch, l.inputs, l.temperature, l.output_gpu, *l.softmax_tree); + /* + int i; + int count = 0; + for (i = 0; i < l.softmax_tree->groups; ++i) { + int group_size = l.softmax_tree->group_size[i]; + softmax_gpu(net.input_gpu + count, group_size, l.batch, l.inputs, 1, 0, 1, l.temperature, l.output_gpu + count); + count += group_size; + } + */ + } else { + if(l.spatial){ + softmax_gpu(net.input_gpu, l.c, l.batch*l.c, l.inputs/l.c, l.w*l.h, 1, l.w*l.h, 1, l.output_gpu); + }else{ + softmax_gpu(net.input_gpu, l.inputs/l.groups, l.batch, l.inputs, l.groups, l.inputs/l.groups, 1, l.temperature, l.output_gpu); + } + } + if(net.truth && !l.noloss){ + softmax_x_ent_gpu(l.batch*l.inputs, l.output_gpu, net.truth_gpu, l.delta_gpu, l.loss_gpu); + if(l.softmax_tree){ + mask_gpu(l.batch*l.inputs, l.delta_gpu, SECRET_NUM, net.truth_gpu, 0); + mask_gpu(l.batch*l.inputs, l.loss_gpu, SECRET_NUM, net.truth_gpu, 0); + } + cuda_pull_array(l.loss_gpu, l.loss, l.batch*l.inputs); + l.cost[0] = sum_array(l.loss, l.batch*l.inputs); + } +} + +void backward_softmax_layer_gpu(const softmax_layer layer, network net) +{ + axpy_gpu(layer.batch*layer.inputs, 1, layer.delta_gpu, 1, net.delta_gpu, 1); +} + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/softmax_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/softmax_layer.h" new file mode 100644 index 00000000..2e3ffe01 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/softmax_layer.h" @@ -0,0 +1,19 @@ +#ifndef SOFTMAX_LAYER_H +#define SOFTMAX_LAYER_H +#include "layer.h" +#include "network.h" + +typedef layer softmax_layer; + +void softmax_array(float *input, int n, float temp, float *output); +softmax_layer make_softmax_layer(int batch, int inputs, int groups); +void forward_softmax_layer(const softmax_layer l, network net); +void backward_softmax_layer(const softmax_layer l, network net); + +#ifdef GPU +void pull_softmax_layer_output(const softmax_layer l); +void forward_softmax_layer_gpu(const softmax_layer l, network net); +void backward_softmax_layer_gpu(const softmax_layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/stb_image.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/stb_image.h" new file mode 100644 index 00000000..d9c21bc8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/stb_image.h" @@ -0,0 +1,7462 @@ +/* stb_image - v2.19 - public domain image loader - http://nothings.org/stb + no warranty implied; use at your own risk + + Do this: + #define STB_IMAGE_IMPLEMENTATION + before you include this file in *one* C or C++ file to create the implementation. + + // i.e. it should look like this: + #include ... + #include ... + #include ... + #define STB_IMAGE_IMPLEMENTATION + #include "stb_image.h" + + You can #define STBI_ASSERT(x) before the #include to avoid using assert.h. + And #define STBI_MALLOC, STBI_REALLOC, and STBI_FREE to avoid using malloc,realloc,free + + + QUICK NOTES: + Primarily of interest to game developers and other people who can + avoid problematic images and only need the trivial interface + + JPEG baseline & progressive (12 bpc/arithmetic not supported, same as stock IJG lib) + PNG 1/2/4/8/16-bit-per-channel + + TGA (not sure what subset, if a subset) + BMP non-1bpp, non-RLE + PSD (composited view only, no extra channels, 8/16 bit-per-channel) + + GIF (*comp always reports as 4-channel) + HDR (radiance rgbE format) + PIC (Softimage PIC) + PNM (PPM and PGM binary only) + + Animated GIF still needs a proper API, but here's one way to do it: + http://gist.github.com/urraka/685d9a6340b26b830d49 + + - decode from memory or through FILE (define STBI_NO_STDIO to remove code) + - decode from arbitrary I/O callbacks + - SIMD acceleration on x86/x64 (SSE2) and ARM (NEON) + + Full documentation under "DOCUMENTATION" below. + + +LICENSE + + See end of file for license information. + +RECENT REVISION HISTORY: + + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) bugfix, 1-bit BMP, 16-bitness query, fix warnings + 2.16 (2017-07-23) all functions have 16-bit variants; optimizations; bugfixes + 2.15 (2017-03-18) fix png-1,2,4; all Imagenet JPGs; no runtime SSE detection on GCC + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-12-04) experimental 16-bit API, only for PNG so far; fixes + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) 16-bit PNGS; enable SSE2 in non-gcc x64 + RGB-format JPEG; remove white matting in PSD; + allocate large structures on the stack; + correct channel count for PNG & BMP + 2.10 (2016-01-22) avoid warning introduced in 2.09 + 2.09 (2016-01-16) 16-bit TGA; comments in PNM files; STBI_REALLOC_SIZED + + See end of file for full revision history. + + + ============================ Contributors ========================= + + Image formats Extensions, features + Sean Barrett (jpeg, png, bmp) Jetro Lauha (stbi_info) + Nicolas Schulz (hdr, psd) Martin "SpartanJ" Golini (stbi_info) + Jonathan Dummer (tga) James "moose2000" Brown (iPhone PNG) + Jean-Marc Lienher (gif) Ben "Disch" Wenger (io callbacks) + Tom Seddon (pic) Omar Cornut (1/2/4-bit PNG) + Thatcher Ulrich (psd) Nicolas Guillemot (vertical flip) + Ken Miller (pgm, ppm) Richard Mitton (16-bit PSD) + github:urraka (animated gif) Junggon Kim (PNM comments) + Christopher Forseth (animated gif) Daniel Gibson (16-bit TGA) + socks-the-fox (16-bit PNG) + Jeremy Sawicki (handle all ImageNet JPGs) + Optimizations & bugfixes Mikhail Morozov (1-bit BMP) + Fabian "ryg" Giesen Anael Seghezzi (is-16-bit query) + Arseny Kapoulkine + John-Mark Allen + + Bug & warning fixes + Marc LeBlanc David Woo Guillaume George Martins Mozeiko + Christpher Lloyd Jerry Jansson Joseph Thomson Phil Jordan + Dave Moore Roy Eltham Hayaki Saito Nathan Reed + Won Chun Luke Graham Johan Duparc Nick Verigakis + the Horde3D community Thomas Ruf Ronny Chevalier github:rlyeh + Janez Zemva John Bartholomew Michal Cichon github:romigrou + Jonathan Blow Ken Hamada Tero Hanninen github:svdijk + Laurent Gomila Cort Stratton Sergio Gonzalez github:snagar + Aruelien Pocheville Thibault Reuille Cass Everitt github:Zelex + Ryamond Barbiero Paul Du Bois Engin Manap github:grim210 + Aldo Culquicondor Philipp Wiesemann Dale Weiler github:sammyhw + Oriol Ferrer Mesia Josh Tobin Matthew Gregan github:phprus + Julian Raschke Gregory Mullen Baldur Karlsson github:poppolopoppo + Christian Floisand Kevin Schmidt github:darealshinji + Blazej Dariusz Roszkowski github:Michaelangel007 +*/ + +#ifndef STBI_INCLUDE_STB_IMAGE_H +#define STBI_INCLUDE_STB_IMAGE_H + +// DOCUMENTATION +// +// Limitations: +// - no 12-bit-per-channel JPEG +// - no JPEGs with arithmetic coding +// - GIF always returns *comp=4 +// +// Basic usage (see HDR discussion below for HDR usage): +// int x,y,n; +// unsigned char *data = stbi_load(filename, &x, &y, &n, 0); +// // ... process data if not NULL ... +// // ... x = width, y = height, n = # 8-bit components per pixel ... +// // ... replace '0' with '1'..'4' to force that many components per pixel +// // ... but 'n' will always be the number that it would have been if you said 0 +// stbi_image_free(data) +// +// Standard parameters: +// int *x -- outputs image width in pixels +// int *y -- outputs image height in pixels +// int *channels_in_file -- outputs # of image components in image file +// int desired_channels -- if non-zero, # of image components requested in result +// +// The return value from an image loader is an 'unsigned char *' which points +// to the pixel data, or NULL on an allocation failure or if the image is +// corrupt or invalid. The pixel data consists of *y scanlines of *x pixels, +// with each pixel consisting of N interleaved 8-bit components; the first +// pixel pointed to is top-left-most in the image. There is no padding between +// image scanlines or between pixels, regardless of format. The number of +// components N is 'desired_channels' if desired_channels is non-zero, or +// *channels_in_file otherwise. If desired_channels is non-zero, +// *channels_in_file has the number of components that _would_ have been +// output otherwise. E.g. if you set desired_channels to 4, you will always +// get RGBA output, but you can check *channels_in_file to see if it's trivially +// opaque because e.g. there were only 3 channels in the source image. +// +// An output image with N components has the following components interleaved +// in this order in each pixel: +// +// N=#comp components +// 1 grey +// 2 grey, alpha +// 3 red, green, blue +// 4 red, green, blue, alpha +// +// If image loading fails for any reason, the return value will be NULL, +// and *x, *y, *channels_in_file will be unchanged. The function +// stbi_failure_reason() can be queried for an extremely brief, end-user +// unfriendly explanation of why the load failed. Define STBI_NO_FAILURE_STRINGS +// to avoid compiling these strings at all, and STBI_FAILURE_USERMSG to get slightly +// more user-friendly ones. +// +// Paletted PNG, BMP, GIF, and PIC images are automatically depalettized. +// +// =========================================================================== +// +// Philosophy +// +// stb libraries are designed with the following priorities: +// +// 1. easy to use +// 2. easy to maintain +// 3. good performance +// +// Sometimes I let "good performance" creep up in priority over "easy to maintain", +// and for best performance I may provide less-easy-to-use APIs that give higher +// performance, in addition to the easy to use ones. Nevertheless, it's important +// to keep in mind that from the standpoint of you, a client of this library, +// all you care about is #1 and #3, and stb libraries DO NOT emphasize #3 above all. +// +// Some secondary priorities arise directly from the first two, some of which +// make more explicit reasons why performance can't be emphasized. +// +// - Portable ("ease of use") +// - Small source code footprint ("easy to maintain") +// - No dependencies ("ease of use") +// +// =========================================================================== +// +// I/O callbacks +// +// I/O callbacks allow you to read from arbitrary sources, like packaged +// files or some other source. Data read from callbacks are processed +// through a small internal buffer (currently 128 bytes) to try to reduce +// overhead. +// +// The three functions you must define are "read" (reads some bytes of data), +// "skip" (skips some bytes of data), "eof" (reports if the stream is at the end). +// +// =========================================================================== +// +// SIMD support +// +// The JPEG decoder will try to automatically use SIMD kernels on x86 when +// supported by the compiler. For ARM Neon support, you must explicitly +// request it. +// +// (The old do-it-yourself SIMD API is no longer supported in the current +// code.) +// +// On x86, SSE2 will automatically be used when available based on a run-time +// test; if not, the generic C versions are used as a fall-back. On ARM targets, +// the typical path is to have separate builds for NEON and non-NEON devices +// (at least this is true for iOS and Android). Therefore, the NEON support is +// toggled by a build flag: define STBI_NEON to get NEON loops. +// +// If for some reason you do not want to use any of SIMD code, or if +// you have issues compiling it, you can disable it entirely by +// defining STBI_NO_SIMD. +// +// =========================================================================== +// +// HDR image support (disable by defining STBI_NO_HDR) +// +// stb_image now supports loading HDR images in general, and currently +// the Radiance .HDR file format, although the support is provided +// generically. You can still load any file through the existing interface; +// if you attempt to load an HDR file, it will be automatically remapped to +// LDR, assuming gamma 2.2 and an arbitrary scale factor defaulting to 1; +// both of these constants can be reconfigured through this interface: +// +// stbi_hdr_to_ldr_gamma(2.2f); +// stbi_hdr_to_ldr_scale(1.0f); +// +// (note, do not use _inverse_ constants; stbi_image will invert them +// appropriately). +// +// Additionally, there is a new, parallel interface for loading files as +// (linear) floats to preserve the full dynamic range: +// +// float *data = stbi_loadf(filename, &x, &y, &n, 0); +// +// If you load LDR images through this interface, those images will +// be promoted to floating point values, run through the inverse of +// constants corresponding to the above: +// +// stbi_ldr_to_hdr_scale(1.0f); +// stbi_ldr_to_hdr_gamma(2.2f); +// +// Finally, given a filename (or an open file or memory block--see header +// file for details) containing image data, you can query for the "most +// appropriate" interface to use (that is, whether the image is HDR or +// not), using: +// +// stbi_is_hdr(char *filename); +// +// =========================================================================== +// +// iPhone PNG support: +// +// By default we convert iphone-formatted PNGs back to RGB, even though +// they are internally encoded differently. You can disable this conversion +// by by calling stbi_convert_iphone_png_to_rgb(0), in which case +// you will always just get the native iphone "format" through (which +// is BGR stored in RGB). +// +// Call stbi_set_unpremultiply_on_load(1) as well to force a divide per +// pixel to remove any premultiplied alpha *only* if the image file explicitly +// says there's premultiplied data (currently only happens in iPhone images, +// and only if iPhone convert-to-rgb processing is on). +// +// =========================================================================== +// +// ADDITIONAL CONFIGURATION +// +// - You can suppress implementation of any of the decoders to reduce +// your code footprint by #defining one or more of the following +// symbols before creating the implementation. +// +// STBI_NO_JPEG +// STBI_NO_PNG +// STBI_NO_BMP +// STBI_NO_PSD +// STBI_NO_TGA +// STBI_NO_GIF +// STBI_NO_HDR +// STBI_NO_PIC +// STBI_NO_PNM (.ppm and .pgm) +// +// - You can request *only* certain decoders and suppress all other ones +// (this will be more forward-compatible, as addition of new decoders +// doesn't require you to disable them explicitly): +// +// STBI_ONLY_JPEG +// STBI_ONLY_PNG +// STBI_ONLY_BMP +// STBI_ONLY_PSD +// STBI_ONLY_TGA +// STBI_ONLY_GIF +// STBI_ONLY_HDR +// STBI_ONLY_PIC +// STBI_ONLY_PNM (.ppm and .pgm) +// +// - If you use STBI_NO_PNG (or _ONLY_ without PNG), and you still +// want the zlib decoder to be available, #define STBI_SUPPORT_ZLIB +// + + +#ifndef STBI_NO_STDIO +#include +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// NOT THREADSAFE +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + + +#ifdef _MSC_VER +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (32 - (y)))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +// assume GCC or Clang on ARM targets +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + fseek((FILE*) user, n, SEEK_CUR); +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +// this is not threadsafe +static const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load = flag_true_if_should_flip; +} + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 8) { + STBI_ASSERT(ri.bits_per_channel == 16); + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + if (ri.bits_per_channel != 16) { + STBI_ASSERT(ri.bits_per_channel == 8); + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) || !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} + +static void stbi__skip(stbi__context *s, int n) +{ + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} + +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} + +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} + +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + return z + (stbi__get16le(s) << 16); +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + + +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} + +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0], dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0], dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2],dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]), dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0],dest[1]=src[1],dest[2]=src[2]; } break; + default: STBI_ASSERT(0); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + if (k < comp) output[i*comp + k] = data[i*comp+k]/255.0f; + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) + for (j=0; j < count[i]; ++j) + h->size[k++] = (stbi_uc) (i+1); + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + + sgn = (stbi__int32)j->code_buffer >> 31; // sign bit is always in MSB + k = stbi_lrot(j->code_buffer, n); + STBI_ASSERT(n >= 0 && n < (int) (sizeof(stbi__bmask)/sizeof(*stbi__bmask))); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & ~sgn); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + diff = t ? stbi__extend_receive(j, t) : 0; + + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + data[0] = (short) (dc << j->succ_low); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) << shift); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) << shift); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + // handle 0s at the end of image data from IP Kamera 9060 + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + if (x == 255) { + j->marker = stbi__get8(j->s); + break; + } + } + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + } else { + if (!stbi__process_marker(j, m)) return 0; + } + m = stbi__get_marker(j); + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4]; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) *out++ = y[i], *out++ = 255; + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[288]; + stbi__uint16 value[288]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + if (z->zbuffer >= z->zbuffer_end) return 0; + return *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + STBI_ASSERT(z->code_buffer < (1U << z->num_bits)); + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s == 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + STBI_ASSERT(z->size[b] == s); + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) stbi__fill_bits(a); + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (int) (z->zout - z->zout_start); + limit = old_limit = (int) (z->zout_end - z->zout_start); + while (cur + n > limit) + limit *= 2; + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) + c = stbi__zreceive(a,3)+3; + else { + STBI_ASSERT(c == 18); + c = stbi__zreceive(a,7)+11; + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + STBI_ASSERT(a->num_bits == 0); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[288] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , 288)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + STBI_ASSERT(img_width_bytes <= x); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load = 0; +static int stbi__de_iphone_flag = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag = flag_true_if_should_convert; +} + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); if (s->img_x > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + s->img_y = stbi__get32be(s); if (s->img_y > (1 << 24)) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + if (scan == STBI__SCAN_header) return 1; + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + // if SCAN_header, have to scan to see if we have a tRNS + } + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { s->img_n = pal_img_n; return 1; } + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth < 8) + ri->bits_per_channel = 8; + else + ri->bits_per_channel = p->depth; + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) n += 16, z >>= 16; + if (z >= 0x00100) n += 8, z >>= 8; + if (z >= 0x00010) n += 4, z >>= 4; + if (z >= 0x00004) n += 2, z >>= 2; + if (z >= 0x00002) n += 1, z >>= 1; + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v >= 0 && v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; +} stbi__bmp_data; + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - 14 - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - 14 - info.hsz) >> 2; + } + + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - 14 - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i], p1[i] = p2[i], p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceeded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + g->out = (stbi_uc *) stbi__malloc(4 * g->w * g->h); + g->background = (stbi_uc *) stbi__malloc(4 * g->w * g->h); + g->history = (stbi_uc *) stbi__malloc(g->w * g->h); + if (g->out == 0) return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "tranparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to teh color that was there the previous frame. + memset( g->out, 0x00, 4 * g->w * g->h ); + memset( g->background, 0x00, 4 * g->w * g->h ); // state of the background (starts transparent) + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispoase of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (o == NULL) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + out = (stbi_uc*) STBI_REALLOC( out, layers * stride ); + if (delays) { + *delays = (int*) STBI_REALLOC( *delays, sizeof(int) * layers ); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if (count > nleft) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + stbi__rewind( s ); + if (p == NULL) + return 0; + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) *comp = info.ma ? 4 : 3; + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + (void) stbi__get32be(s); + (void) stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) +// Does not support 16-bit-per-channel + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + if (!stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n)) + return 0; + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad3sizes_valid(s->img_n, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad3(s->img_n, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + stbi__getn(s, out, s->img_n * s->img_x * s->img_y); + + if (req_comp && req_comp != s->img_n) { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + + if (maxv > 255) + return stbi__err("max value > 255", "PPM image not 8-bit"); + else + return 1; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/stb_image_write.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/stb_image_write.h" new file mode 100644 index 00000000..c05e9581 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/stb_image_write.h" @@ -0,0 +1,1568 @@ +/* stb_image_write - v1.09 - public domain - http://nothings.org/stb/stb_image_write.h + writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 + no warranty implied; use at your own risk + + Before #including, + + #define STB_IMAGE_WRITE_IMPLEMENTATION + + in the file that you want to have the implementation. + + Will probably not work correctly with strict-aliasing optimizations. + + If using a modern Microsoft Compiler, non-safe versions of CRT calls may cause + compilation warnings or even errors. To avoid this, also before #including, + + #define STBI_MSC_SECURE_CRT + +ABOUT: + + This header file is a library for writing images to C stdio. It could be + adapted to write to memory or a general streaming interface; let me know. + + The PNG output is not optimal; it is 20-50% larger than the file + written by a decent optimizing implementation; though providing a custom + zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. + This library is designed for source code compactness and simplicity, + not optimal image file size or run-time performance. + +BUILDING: + + You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. + You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace + malloc,realloc,free. + You can #define STBIW_MEMMOVE() to replace memmove() + You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function + for PNG compression (instead of the builtin one), it must have the following signature: + unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); + The returned data will be freed with STBIW_FREE() (free() by default), + so it must be heap allocated with STBIW_MALLOC() (malloc() by default), + +USAGE: + + There are five functions, one for each image file format: + + int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); + int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); + int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); + + void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically + + There are also five equivalent functions that use an arbitrary write function. You are + expected to open/close your file-equivalent before and after calling these: + + int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); + int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); + int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); + int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + + where the callback is: + void stbi_write_func(void *context, void *data, int size); + + You can configure it with these global variables: + int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE + int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression + int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode + + + You can define STBI_WRITE_NO_STDIO to disable the file variant of these + functions, so the library will not use stdio.h at all. However, this will + also disable HDR writing, because it requires stdio for formatted output. + + Each function returns 0 on failure and non-0 on success. + + The functions create an image file defined by the parameters. The image + is a rectangle of pixels stored from left-to-right, top-to-bottom. + Each pixel contains 'comp' channels of data stored interleaved with 8-bits + per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is + monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. + The *data pointer points to the first byte of the top-left-most pixel. + For PNG, "stride_in_bytes" is the distance in bytes from the first byte of + a row of pixels to the first byte of the next row of pixels. + + PNG creates output files with the same number of components as the input. + The BMP format expands Y to RGB in the file format and does not + output alpha. + + PNG supports writing rectangles of data even when the bytes storing rows of + data are not consecutive in memory (e.g. sub-rectangles of a larger image), + by supplying the stride between the beginning of adjacent rows. The other + formats do not. (Thus you cannot write a native-format BMP through the BMP + writer, both because it is in BGR order and because it may have padding + at the end of the line.) + + PNG allows you to set the deflate compression level by setting the global + variable 'stbi_write_png_compression_level' (it defaults to 8). + + HDR expects linear float data. Since the format is always 32-bit rgb(e) + data, alpha (if provided) is discarded, and for monochrome data it is + replicated across all three channels. + + TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed + data, set the global variable 'stbi_write_tga_with_rle' to 0. + + JPEG does ignore alpha channels in input data; quality is between 1 and 100. + Higher quality looks better but results in a bigger image. + JPEG baseline (no JPEG progressive). + +CREDITS: + + + Sean Barrett - PNG/BMP/TGA + Baldur Karlsson - HDR + Jean-Sebastien Guay - TGA monochrome + Tim Kelsey - misc enhancements + Alan Hickman - TGA RLE + Emmanuel Julien - initial file IO callback implementation + Jon Olick - original jo_jpeg.cpp code + Daniel Gibson - integrate JPEG, allow external zlib + Aarni Koskela - allow choosing PNG filter + + bugfixes: + github:Chribba + Guillaume Chereau + github:jry2 + github:romigrou + Sergio Gonzalez + Jonas Karlsson + Filip Wasil + Thatcher Ulrich + github:poppolopoppo + Patrick Boettcher + github:xeekworx + Cap Petschulat + Simon Rodriguez + Ivan Tikhonov + github:ignotion + Adam Schackart + +LICENSE + + See end of file for license information. + +*/ + +#ifndef INCLUDE_STB_IMAGE_WRITE_H +#define INCLUDE_STB_IMAGE_WRITE_H + +// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' +#ifndef STBIWDEF +#ifdef STB_IMAGE_WRITE_STATIC +#define STBIWDEF static +#else +#ifdef __cplusplus +#define STBIWDEF extern "C" +#else +#define STBIWDEF extern +#endif +#endif +#endif + +#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations +extern int stbi_write_tga_with_rle; +extern int stbi_write_png_compression_level; +extern int stbi_write_force_png_filter; +#endif + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); +#endif + +typedef void stbi_write_func(void *context, void *data, int size); + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); + +STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); + +#endif//INCLUDE_STB_IMAGE_WRITE_H + +#ifdef STB_IMAGE_WRITE_IMPLEMENTATION + +#ifdef _WIN32 + #ifndef _CRT_SECURE_NO_WARNINGS + #define _CRT_SECURE_NO_WARNINGS + #endif + #ifndef _CRT_NONSTDC_NO_DEPRECATE + #define _CRT_NONSTDC_NO_DEPRECATE + #endif +#endif + +#ifndef STBI_WRITE_NO_STDIO +#include +#endif // STBI_WRITE_NO_STDIO + +#include +#include +#include +#include + +#if defined(STBIW_MALLOC) && defined(STBIW_FREE) && (defined(STBIW_REALLOC) || defined(STBIW_REALLOC_SIZED)) +// ok +#elif !defined(STBIW_MALLOC) && !defined(STBIW_FREE) && !defined(STBIW_REALLOC) && !defined(STBIW_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBIW_MALLOC, STBIW_FREE, and STBIW_REALLOC (or STBIW_REALLOC_SIZED)." +#endif + +#ifndef STBIW_MALLOC +#define STBIW_MALLOC(sz) malloc(sz) +#define STBIW_REALLOC(p,newsz) realloc(p,newsz) +#define STBIW_FREE(p) free(p) +#endif + +#ifndef STBIW_REALLOC_SIZED +#define STBIW_REALLOC_SIZED(p,oldsz,newsz) STBIW_REALLOC(p,newsz) +#endif + + +#ifndef STBIW_MEMMOVE +#define STBIW_MEMMOVE(a,b,sz) memmove(a,b,sz) +#endif + + +#ifndef STBIW_ASSERT +#include +#define STBIW_ASSERT(x) assert(x) +#endif + +#define STBIW_UCHAR(x) (unsigned char) ((x) & 0xff) + +#ifdef STB_IMAGE_WRITE_STATIC +static int stbi__flip_vertically_on_write=0; +static int stbi_write_png_compression_level = 8; +static int stbi_write_tga_with_rle = 1; +static int stbi_write_force_png_filter = -1; +#else +int stbi_write_png_compression_level = 8; +int stbi__flip_vertically_on_write=0; +int stbi_write_tga_with_rle = 1; +int stbi_write_force_png_filter = -1; +#endif + +STBIWDEF void stbi_flip_vertically_on_write(int flag) +{ + stbi__flip_vertically_on_write = flag; +} + +typedef struct +{ + stbi_write_func *func; + void *context; +} stbi__write_context; + +// initialize a callback-based context +static void stbi__start_write_callbacks(stbi__write_context *s, stbi_write_func *c, void *context) +{ + s->func = c; + s->context = context; +} + +#ifndef STBI_WRITE_NO_STDIO + +static void stbi__stdio_write(void *context, void *data, int size) +{ + fwrite(data,1,size,(FILE*) context); +} + +static int stbi__start_write_file(stbi__write_context *s, const char *filename) +{ + FILE *f; +#ifdef STBI_MSC_SECURE_CRT + if (fopen_s(&f, filename, "wb")) + f = NULL; +#else + f = fopen(filename, "wb"); +#endif + stbi__start_write_callbacks(s, stbi__stdio_write, (void *) f); + return f != NULL; +} + +static void stbi__end_write_file(stbi__write_context *s) +{ + fclose((FILE *)s->context); +} + +#endif // !STBI_WRITE_NO_STDIO + +typedef unsigned int stbiw_uint32; +typedef int stb_image_write_test[sizeof(stbiw_uint32)==4 ? 1 : -1]; + +static void stbiw__writefv(stbi__write_context *s, const char *fmt, va_list v) +{ + while (*fmt) { + switch (*fmt++) { + case ' ': break; + case '1': { unsigned char x = STBIW_UCHAR(va_arg(v, int)); + s->func(s->context,&x,1); + break; } + case '2': { int x = va_arg(v,int); + unsigned char b[2]; + b[0] = STBIW_UCHAR(x); + b[1] = STBIW_UCHAR(x>>8); + s->func(s->context,b,2); + break; } + case '4': { stbiw_uint32 x = va_arg(v,int); + unsigned char b[4]; + b[0]=STBIW_UCHAR(x); + b[1]=STBIW_UCHAR(x>>8); + b[2]=STBIW_UCHAR(x>>16); + b[3]=STBIW_UCHAR(x>>24); + s->func(s->context,b,4); + break; } + default: + STBIW_ASSERT(0); + return; + } + } +} + +static void stbiw__writef(stbi__write_context *s, const char *fmt, ...) +{ + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); +} + +static void stbiw__putc(stbi__write_context *s, unsigned char c) +{ + s->func(s->context, &c, 1); +} + +static void stbiw__write3(stbi__write_context *s, unsigned char a, unsigned char b, unsigned char c) +{ + unsigned char arr[3]; + arr[0] = a, arr[1] = b, arr[2] = c; + s->func(s->context, arr, 3); +} + +static void stbiw__write_pixel(stbi__write_context *s, int rgb_dir, int comp, int write_alpha, int expand_mono, unsigned char *d) +{ + unsigned char bg[3] = { 255, 0, 255}, px[3]; + int k; + + if (write_alpha < 0) + s->func(s->context, &d[comp - 1], 1); + + switch (comp) { + case 2: // 2 pixels = mono + alpha, alpha is written separately, so same as 1-channel case + case 1: + if (expand_mono) + stbiw__write3(s, d[0], d[0], d[0]); // monochrome bmp + else + s->func(s->context, d, 1); // monochrome TGA + break; + case 4: + if (!write_alpha) { + // composite against pink background + for (k = 0; k < 3; ++k) + px[k] = bg[k] + ((d[k] - bg[k]) * d[3]) / 255; + stbiw__write3(s, px[1 - rgb_dir], px[1], px[1 + rgb_dir]); + break; + } + /* FALLTHROUGH */ + case 3: + stbiw__write3(s, d[1 - rgb_dir], d[1], d[1 + rgb_dir]); + break; + } + if (write_alpha > 0) + s->func(s->context, &d[comp - 1], 1); +} + +static void stbiw__write_pixels(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, void *data, int write_alpha, int scanline_pad, int expand_mono) +{ + stbiw_uint32 zero = 0; + int i,j, j_end; + + if (y <= 0) + return; + + if (stbi__flip_vertically_on_write) + vdir *= -1; + + if (vdir < 0) + j_end = -1, j = y-1; + else + j_end = y, j = 0; + + for (; j != j_end; j += vdir) { + for (i=0; i < x; ++i) { + unsigned char *d = (unsigned char *) data + (j*x+i)*comp; + stbiw__write_pixel(s, rgb_dir, comp, write_alpha, expand_mono, d); + } + s->func(s->context, &zero, scanline_pad); + } +} + +static int stbiw__outfile(stbi__write_context *s, int rgb_dir, int vdir, int x, int y, int comp, int expand_mono, void *data, int alpha, int pad, const char *fmt, ...) +{ + if (y < 0 || x < 0) { + return 0; + } else { + va_list v; + va_start(v, fmt); + stbiw__writefv(s, fmt, v); + va_end(v); + stbiw__write_pixels(s,rgb_dir,vdir,x,y,comp,data,alpha,pad, expand_mono); + return 1; + } +} + +static int stbi_write_bmp_core(stbi__write_context *s, int x, int y, int comp, const void *data) +{ + int pad = (-x*3) & 3; + return stbiw__outfile(s,-1,-1,x,y,comp,1,(void *) data,0,pad, + "11 4 22 4" "4 44 22 444444", + 'B', 'M', 14+40+(x*3+pad)*y, 0,0, 14+40, // file header + 40, x,y, 1,24, 0,0,0,0,0,0); // bitmap header +} + +STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_bmp_core(&s, x, y, comp, data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_bmp(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_bmp_core(&s, x, y, comp, data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif //!STBI_WRITE_NO_STDIO + +static int stbi_write_tga_core(stbi__write_context *s, int x, int y, int comp, void *data) +{ + int has_alpha = (comp == 2 || comp == 4); + int colorbytes = has_alpha ? comp-1 : comp; + int format = colorbytes < 2 ? 3 : 2; // 3 color channels (RGB/RGBA) = 2, 1 color channel (Y/YA) = 3 + + if (y < 0 || x < 0) + return 0; + + if (!stbi_write_tga_with_rle) { + return stbiw__outfile(s, -1, -1, x, y, comp, 0, (void *) data, has_alpha, 0, + "111 221 2222 11", 0, 0, format, 0, 0, 0, 0, 0, x, y, (colorbytes + has_alpha) * 8, has_alpha * 8); + } else { + int i,j,k; + int jend, jdir; + + stbiw__writef(s, "111 221 2222 11", 0,0,format+8, 0,0,0, 0,0,x,y, (colorbytes + has_alpha) * 8, has_alpha * 8); + + if (stbi__flip_vertically_on_write) { + j = 0; + jend = y; + jdir = 1; + } else { + j = y-1; + jend = -1; + jdir = -1; + } + for (; j != jend; j += jdir) { + unsigned char *row = (unsigned char *) data + j * x * comp; + int len; + + for (i = 0; i < x; i += len) { + unsigned char *begin = row + i * comp; + int diff = 1; + len = 1; + + if (i < x - 1) { + ++len; + diff = memcmp(begin, row + (i + 1) * comp, comp); + if (diff) { + const unsigned char *prev = begin; + for (k = i + 2; k < x && len < 128; ++k) { + if (memcmp(prev, row + k * comp, comp)) { + prev += comp; + ++len; + } else { + --len; + break; + } + } + } else { + for (k = i + 2; k < x && len < 128; ++k) { + if (!memcmp(begin, row + k * comp, comp)) { + ++len; + } else { + break; + } + } + } + } + + if (diff) { + unsigned char header = STBIW_UCHAR(len - 1); + s->func(s->context, &header, 1); + for (k = 0; k < len; ++k) { + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin + k * comp); + } + } else { + unsigned char header = STBIW_UCHAR(len - 129); + s->func(s->context, &header, 1); + stbiw__write_pixel(s, -1, comp, has_alpha, 0, begin); + } + } + } + } + return 1; +} + +STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_tga_core(&s, x, y, comp, (void *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_tga(char const *filename, int x, int y, int comp, const void *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_tga_core(&s, x, y, comp, (void *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR writer +// by Baldur Karlsson + +#define stbiw__max(a, b) ((a) > (b) ? (a) : (b)) + +void stbiw__linear_to_rgbe(unsigned char *rgbe, float *linear) +{ + int exponent; + float maxcomp = stbiw__max(linear[0], stbiw__max(linear[1], linear[2])); + + if (maxcomp < 1e-32f) { + rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0; + } else { + float normalize = (float) frexp(maxcomp, &exponent) * 256.0f/maxcomp; + + rgbe[0] = (unsigned char)(linear[0] * normalize); + rgbe[1] = (unsigned char)(linear[1] * normalize); + rgbe[2] = (unsigned char)(linear[2] * normalize); + rgbe[3] = (unsigned char)(exponent + 128); + } +} + +void stbiw__write_run_data(stbi__write_context *s, int length, unsigned char databyte) +{ + unsigned char lengthbyte = STBIW_UCHAR(length+128); + STBIW_ASSERT(length+128 <= 255); + s->func(s->context, &lengthbyte, 1); + s->func(s->context, &databyte, 1); +} + +void stbiw__write_dump_data(stbi__write_context *s, int length, unsigned char *data) +{ + unsigned char lengthbyte = STBIW_UCHAR(length); + STBIW_ASSERT(length <= 128); // inconsistent with spec but consistent with official code + s->func(s->context, &lengthbyte, 1); + s->func(s->context, data, length); +} + +void stbiw__write_hdr_scanline(stbi__write_context *s, int width, int ncomp, unsigned char *scratch, float *scanline) +{ + unsigned char scanlineheader[4] = { 2, 2, 0, 0 }; + unsigned char rgbe[4]; + float linear[3]; + int x; + + scanlineheader[2] = (width&0xff00)>>8; + scanlineheader[3] = (width&0x00ff); + + /* skip RLE for images too small or large */ + if (width < 8 || width >= 32768) { + for (x=0; x < width; x++) { + switch (ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + s->func(s->context, rgbe, 4); + } + } else { + int c,r; + /* encode into scratch buffer */ + for (x=0; x < width; x++) { + switch(ncomp) { + case 4: /* fallthrough */ + case 3: linear[2] = scanline[x*ncomp + 2]; + linear[1] = scanline[x*ncomp + 1]; + linear[0] = scanline[x*ncomp + 0]; + break; + default: + linear[0] = linear[1] = linear[2] = scanline[x*ncomp + 0]; + break; + } + stbiw__linear_to_rgbe(rgbe, linear); + scratch[x + width*0] = rgbe[0]; + scratch[x + width*1] = rgbe[1]; + scratch[x + width*2] = rgbe[2]; + scratch[x + width*3] = rgbe[3]; + } + + s->func(s->context, scanlineheader, 4); + + /* RLE each component separately */ + for (c=0; c < 4; c++) { + unsigned char *comp = &scratch[width*c]; + + x = 0; + while (x < width) { + // find first run + r = x; + while (r+2 < width) { + if (comp[r] == comp[r+1] && comp[r] == comp[r+2]) + break; + ++r; + } + if (r+2 >= width) + r = width; + // dump up to first run + while (x < r) { + int len = r-x; + if (len > 128) len = 128; + stbiw__write_dump_data(s, len, &comp[x]); + x += len; + } + // if there's a run, output it + if (r+2 < width) { // same test as what we break out of in search loop, so only true if we break'd + // find next byte after run + while (r < width && comp[r] == comp[x]) + ++r; + // output run up to r + while (x < r) { + int len = r-x; + if (len > 127) len = 127; + stbiw__write_run_data(s, len, comp[x]); + x += len; + } + } + } + } + } +} + +static int stbi_write_hdr_core(stbi__write_context *s, int x, int y, int comp, float *data) +{ + if (y <= 0 || x <= 0 || data == NULL) + return 0; + else { + // Each component is stored separately. Allocate scratch space for full output scanline. + unsigned char *scratch = (unsigned char *) STBIW_MALLOC(x*4); + int i, len; + char buffer[128]; + char header[] = "#?RADIANCE\n# Written by stb_image_write.h\nFORMAT=32-bit_rle_rgbe\n"; + s->func(s->context, header, sizeof(header)-1); + +#ifdef STBI_MSC_SECURE_CRT + len = sprintf_s(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#else + len = sprintf(buffer, "EXPOSURE= 1.0000000000000\n\n-Y %d +X %d\n", y, x); +#endif + s->func(s->context, buffer, len); + + for(i=0; i < y; i++) + stbiw__write_hdr_scanline(s, x, comp, scratch, data + comp*x*(stbi__flip_vertically_on_write ? y-1-i : i)*x); + STBIW_FREE(scratch); + return 1; + } +} + +STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_hdr_core(&s, x, y, comp, (float *) data); +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_hdr(char const *filename, int x, int y, int comp, const float *data) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_hdr_core(&s, x, y, comp, (float *) data); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif // STBI_WRITE_NO_STDIO + + +////////////////////////////////////////////////////////////////////////////// +// +// PNG writer +// + +#ifndef STBIW_ZLIB_COMPRESS +// stretchy buffer; stbiw__sbpush() == vector<>::push_back() -- stbiw__sbcount() == vector<>::size() +#define stbiw__sbraw(a) ((int *) (a) - 2) +#define stbiw__sbm(a) stbiw__sbraw(a)[0] +#define stbiw__sbn(a) stbiw__sbraw(a)[1] + +#define stbiw__sbneedgrow(a,n) ((a)==0 || stbiw__sbn(a)+n >= stbiw__sbm(a)) +#define stbiw__sbmaybegrow(a,n) (stbiw__sbneedgrow(a,(n)) ? stbiw__sbgrow(a,n) : 0) +#define stbiw__sbgrow(a,n) stbiw__sbgrowf((void **) &(a), (n), sizeof(*(a))) + +#define stbiw__sbpush(a, v) (stbiw__sbmaybegrow(a,1), (a)[stbiw__sbn(a)++] = (v)) +#define stbiw__sbcount(a) ((a) ? stbiw__sbn(a) : 0) +#define stbiw__sbfree(a) ((a) ? STBIW_FREE(stbiw__sbraw(a)),0 : 0) + +static void *stbiw__sbgrowf(void **arr, int increment, int itemsize) +{ + int m = *arr ? 2*stbiw__sbm(*arr)+increment : increment+1; + void *p = STBIW_REALLOC_SIZED(*arr ? stbiw__sbraw(*arr) : 0, *arr ? (stbiw__sbm(*arr)*itemsize + sizeof(int)*2) : 0, itemsize * m + sizeof(int)*2); + STBIW_ASSERT(p); + if (p) { + if (!*arr) ((int *) p)[1] = 0; + *arr = (void *) ((int *) p + 2); + stbiw__sbm(*arr) = m; + } + return *arr; +} + +static unsigned char *stbiw__zlib_flushf(unsigned char *data, unsigned int *bitbuffer, int *bitcount) +{ + while (*bitcount >= 8) { + stbiw__sbpush(data, STBIW_UCHAR(*bitbuffer)); + *bitbuffer >>= 8; + *bitcount -= 8; + } + return data; +} + +static int stbiw__zlib_bitrev(int code, int codebits) +{ + int res=0; + while (codebits--) { + res = (res << 1) | (code & 1); + code >>= 1; + } + return res; +} + +static unsigned int stbiw__zlib_countm(unsigned char *a, unsigned char *b, int limit) +{ + int i; + for (i=0; i < limit && i < 258; ++i) + if (a[i] != b[i]) break; + return i; +} + +static unsigned int stbiw__zhash(unsigned char *data) +{ + stbiw_uint32 hash = data[0] + (data[1] << 8) + (data[2] << 16); + hash ^= hash << 3; + hash += hash >> 5; + hash ^= hash << 4; + hash += hash >> 17; + hash ^= hash << 25; + hash += hash >> 6; + return hash; +} + +#define stbiw__zlib_flush() (out = stbiw__zlib_flushf(out, &bitbuf, &bitcount)) +#define stbiw__zlib_add(code,codebits) \ + (bitbuf |= (code) << bitcount, bitcount += (codebits), stbiw__zlib_flush()) +#define stbiw__zlib_huffa(b,c) stbiw__zlib_add(stbiw__zlib_bitrev(b,c),c) +// default huffman tables +#define stbiw__zlib_huff1(n) stbiw__zlib_huffa(0x30 + (n), 8) +#define stbiw__zlib_huff2(n) stbiw__zlib_huffa(0x190 + (n)-144, 9) +#define stbiw__zlib_huff3(n) stbiw__zlib_huffa(0 + (n)-256,7) +#define stbiw__zlib_huff4(n) stbiw__zlib_huffa(0xc0 + (n)-280,8) +#define stbiw__zlib_huff(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : (n) <= 255 ? stbiw__zlib_huff2(n) : (n) <= 279 ? stbiw__zlib_huff3(n) : stbiw__zlib_huff4(n)) +#define stbiw__zlib_huffb(n) ((n) <= 143 ? stbiw__zlib_huff1(n) : stbiw__zlib_huff2(n)) + +#define stbiw__ZHASH 16384 + +#endif // STBIW_ZLIB_COMPRESS + +unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality) +{ +#ifdef STBIW_ZLIB_COMPRESS + // user provided a zlib compress implementation, use that + return STBIW_ZLIB_COMPRESS(data, data_len, out_len, quality); +#else // use builtin + static unsigned short lengthc[] = { 3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258, 259 }; + static unsigned char lengtheb[]= { 0,0,0,0,0,0,0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 }; + static unsigned short distc[] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577, 32768 }; + static unsigned char disteb[] = { 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; + unsigned int bitbuf=0; + int i,j, bitcount=0; + unsigned char *out = NULL; + unsigned char ***hash_table = (unsigned char***) STBIW_MALLOC(stbiw__ZHASH * sizeof(char**)); + if (hash_table == NULL) + return NULL; + if (quality < 5) quality = 5; + + stbiw__sbpush(out, 0x78); // DEFLATE 32K window + stbiw__sbpush(out, 0x5e); // FLEVEL = 1 + stbiw__zlib_add(1,1); // BFINAL = 1 + stbiw__zlib_add(1,2); // BTYPE = 1 -- fixed huffman + + for (i=0; i < stbiw__ZHASH; ++i) + hash_table[i] = NULL; + + i=0; + while (i < data_len-3) { + // hash next 3 bytes of data to be compressed + int h = stbiw__zhash(data+i)&(stbiw__ZHASH-1), best=3; + unsigned char *bestloc = 0; + unsigned char **hlist = hash_table[h]; + int n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32768) { // if entry lies within window + int d = stbiw__zlib_countm(hlist[j], data+i, data_len-i); + if (d >= best) best=d,bestloc=hlist[j]; + } + } + // when hash table entry is too long, delete half the entries + if (hash_table[h] && stbiw__sbn(hash_table[h]) == 2*quality) { + STBIW_MEMMOVE(hash_table[h], hash_table[h]+quality, sizeof(hash_table[h][0])*quality); + stbiw__sbn(hash_table[h]) = quality; + } + stbiw__sbpush(hash_table[h],data+i); + + if (bestloc) { + // "lazy matching" - check match at *next* byte, and if it's better, do cur byte as literal + h = stbiw__zhash(data+i+1)&(stbiw__ZHASH-1); + hlist = hash_table[h]; + n = stbiw__sbcount(hlist); + for (j=0; j < n; ++j) { + if (hlist[j]-data > i-32767) { + int e = stbiw__zlib_countm(hlist[j], data+i+1, data_len-i-1); + if (e > best) { // if next match is better, bail on current match + bestloc = NULL; + break; + } + } + } + } + + if (bestloc) { + int d = (int) (data+i - bestloc); // distance back + STBIW_ASSERT(d <= 32767 && best <= 258); + for (j=0; best > lengthc[j+1]-1; ++j); + stbiw__zlib_huff(j+257); + if (lengtheb[j]) stbiw__zlib_add(best - lengthc[j], lengtheb[j]); + for (j=0; d > distc[j+1]-1; ++j); + stbiw__zlib_add(stbiw__zlib_bitrev(j,5),5); + if (disteb[j]) stbiw__zlib_add(d - distc[j], disteb[j]); + i += best; + } else { + stbiw__zlib_huffb(data[i]); + ++i; + } + } + // write out final bytes + for (;i < data_len; ++i) + stbiw__zlib_huffb(data[i]); + stbiw__zlib_huff(256); // end of block + // pad with 0 bits to byte boundary + while (bitcount) + stbiw__zlib_add(0,1); + + for (i=0; i < stbiw__ZHASH; ++i) + (void) stbiw__sbfree(hash_table[i]); + STBIW_FREE(hash_table); + + { + // compute adler32 on input + unsigned int s1=1, s2=0; + int blocklen = (int) (data_len % 5552); + j=0; + while (j < data_len) { + for (i=0; i < blocklen; ++i) s1 += data[j+i], s2 += s1; + s1 %= 65521, s2 %= 65521; + j += blocklen; + blocklen = 5552; + } + stbiw__sbpush(out, STBIW_UCHAR(s2 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s2)); + stbiw__sbpush(out, STBIW_UCHAR(s1 >> 8)); + stbiw__sbpush(out, STBIW_UCHAR(s1)); + } + *out_len = stbiw__sbn(out); + // make returned pointer freeable + STBIW_MEMMOVE(stbiw__sbraw(out), out, *out_len); + return (unsigned char *) stbiw__sbraw(out); +#endif // STBIW_ZLIB_COMPRESS +} + +static unsigned int stbiw__crc32(unsigned char *buffer, int len) +{ + static unsigned int crc_table[256] = + { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0eDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D + }; + + unsigned int crc = ~0u; + int i; + for (i=0; i < len; ++i) + crc = (crc >> 8) ^ crc_table[buffer[i] ^ (crc & 0xff)]; + return ~crc; +} + +#define stbiw__wpng4(o,a,b,c,d) ((o)[0]=STBIW_UCHAR(a),(o)[1]=STBIW_UCHAR(b),(o)[2]=STBIW_UCHAR(c),(o)[3]=STBIW_UCHAR(d),(o)+=4) +#define stbiw__wp32(data,v) stbiw__wpng4(data, (v)>>24,(v)>>16,(v)>>8,(v)); +#define stbiw__wptag(data,s) stbiw__wpng4(data, s[0],s[1],s[2],s[3]) + +static void stbiw__wpcrc(unsigned char **data, int len) +{ + unsigned int crc = stbiw__crc32(*data - len - 4, len+4); + stbiw__wp32(*data, crc); +} + +static unsigned char stbiw__paeth(int a, int b, int c) +{ + int p = a + b - c, pa = abs(p-a), pb = abs(p-b), pc = abs(p-c); + if (pa <= pb && pa <= pc) return STBIW_UCHAR(a); + if (pb <= pc) return STBIW_UCHAR(b); + return STBIW_UCHAR(c); +} + +// @OPTIMIZE: provide an option that always forces left-predict or paeth predict +static void stbiw__encode_png_line(unsigned char *pixels, int stride_bytes, int width, int height, int y, int n, int filter_type, signed char *line_buffer) +{ + static int mapping[] = { 0,1,2,3,4 }; + static int firstmap[] = { 0,1,0,5,6 }; + int *mymap = (y != 0) ? mapping : firstmap; + int i; + int type = mymap[filter_type]; + unsigned char *z = pixels + stride_bytes * (stbi__flip_vertically_on_write ? height-1-y : y); + int signed_stride = stbi__flip_vertically_on_write ? -stride_bytes : stride_bytes; + for (i = 0; i < n; ++i) { + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - (z[i-signed_stride]>>1); break; + case 4: line_buffer[i] = (signed char) (z[i] - stbiw__paeth(0,z[i-signed_stride],0)); break; + case 5: line_buffer[i] = z[i]; break; + case 6: line_buffer[i] = z[i]; break; + } + } + for (i=n; i < width*n; ++i) { + switch (type) { + case 0: line_buffer[i] = z[i]; break; + case 1: line_buffer[i] = z[i] - z[i-n]; break; + case 2: line_buffer[i] = z[i] - z[i-signed_stride]; break; + case 3: line_buffer[i] = z[i] - ((z[i-n] + z[i-signed_stride])>>1); break; + case 4: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], z[i-signed_stride], z[i-signed_stride-n]); break; + case 5: line_buffer[i] = z[i] - (z[i-n]>>1); break; + case 6: line_buffer[i] = z[i] - stbiw__paeth(z[i-n], 0,0); break; + } + } +} + +unsigned char *stbi_write_png_to_mem(unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len) +{ + int force_filter = stbi_write_force_png_filter; + int ctype[5] = { -1, 0, 4, 2, 6 }; + unsigned char sig[8] = { 137,80,78,71,13,10,26,10 }; + unsigned char *out,*o, *filt, *zlib; + signed char *line_buffer; + int j,zlen; + + if (stride_bytes == 0) + stride_bytes = x * n; + + if (force_filter >= 5) { + force_filter = -1; + } + + filt = (unsigned char *) STBIW_MALLOC((x*n+1) * y); if (!filt) return 0; + line_buffer = (signed char *) STBIW_MALLOC(x * n); if (!line_buffer) { STBIW_FREE(filt); return 0; } + for (j=0; j < y; ++j) { + int filter_type; + if (force_filter > -1) { + filter_type = force_filter; + stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, force_filter, line_buffer); + } else { // Estimate the best filter by running through all of them: + int best_filter = 0, best_filter_val = 0x7fffffff, est, i; + for (filter_type = 0; filter_type < 5; filter_type++) { + stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, filter_type, line_buffer); + + // Estimate the entropy of the line using this filter; the less, the better. + est = 0; + for (i = 0; i < x*n; ++i) { + est += abs((signed char) line_buffer[i]); + } + if (est < best_filter_val) { + best_filter_val = est; + best_filter = filter_type; + } + } + if (filter_type != best_filter) { // If the last iteration already got us the best filter, don't redo it + stbiw__encode_png_line(pixels, stride_bytes, x, y, j, n, best_filter, line_buffer); + filter_type = best_filter; + } + } + // when we get here, filter_type contains the filter type, and line_buffer contains the data + filt[j*(x*n+1)] = (unsigned char) filter_type; + STBIW_MEMMOVE(filt+j*(x*n+1)+1, line_buffer, x*n); + } + STBIW_FREE(line_buffer); + zlib = stbi_zlib_compress(filt, y*( x*n+1), &zlen, stbi_write_png_compression_level); + STBIW_FREE(filt); + if (!zlib) return 0; + + // each tag requires 12 bytes of overhead + out = (unsigned char *) STBIW_MALLOC(8 + 12+13 + 12+zlen + 12); + if (!out) return 0; + *out_len = 8 + 12+13 + 12+zlen + 12; + + o=out; + STBIW_MEMMOVE(o,sig,8); o+= 8; + stbiw__wp32(o, 13); // header length + stbiw__wptag(o, "IHDR"); + stbiw__wp32(o, x); + stbiw__wp32(o, y); + *o++ = 8; + *o++ = STBIW_UCHAR(ctype[n]); + *o++ = 0; + *o++ = 0; + *o++ = 0; + stbiw__wpcrc(&o,13); + + stbiw__wp32(o, zlen); + stbiw__wptag(o, "IDAT"); + STBIW_MEMMOVE(o, zlib, zlen); + o += zlen; + STBIW_FREE(zlib); + stbiw__wpcrc(&o, zlen); + + stbiw__wp32(o,0); + stbiw__wptag(o, "IEND"); + stbiw__wpcrc(&o,0); + + STBIW_ASSERT(o == out + *out_len); + + return out; +} + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_png(char const *filename, int x, int y, int comp, const void *data, int stride_bytes) +{ + FILE *f; + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; +#ifdef STBI_MSC_SECURE_CRT + if (fopen_s(&f, filename, "wb")) + f = NULL; +#else + f = fopen(filename, "wb"); +#endif + if (!f) { STBIW_FREE(png); return 0; } + fwrite(png, 1, len, f); + fclose(f); + STBIW_FREE(png); + return 1; +} +#endif + +STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int stride_bytes) +{ + int len; + unsigned char *png = stbi_write_png_to_mem((unsigned char *) data, stride_bytes, x, y, comp, &len); + if (png == NULL) return 0; + func(context, png, len); + STBIW_FREE(png); + return 1; +} + + +/* *************************************************************************** + * + * JPEG writer + * + * This is based on Jon Olick's jo_jpeg.cpp: + * public domain Simple, Minimalistic JPEG writer - http://www.jonolick.com/code.html + */ + +static const unsigned char stbiw__jpg_ZigZag[] = { 0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18, + 24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63 }; + +static void stbiw__jpg_writeBits(stbi__write_context *s, int *bitBufP, int *bitCntP, const unsigned short *bs) { + int bitBuf = *bitBufP, bitCnt = *bitCntP; + bitCnt += bs[1]; + bitBuf |= bs[0] << (24 - bitCnt); + while(bitCnt >= 8) { + unsigned char c = (bitBuf >> 16) & 255; + stbiw__putc(s, c); + if(c == 255) { + stbiw__putc(s, 0); + } + bitBuf <<= 8; + bitCnt -= 8; + } + *bitBufP = bitBuf; + *bitCntP = bitCnt; +} + +static void stbiw__jpg_DCT(float *d0p, float *d1p, float *d2p, float *d3p, float *d4p, float *d5p, float *d6p, float *d7p) { + float d0 = *d0p, d1 = *d1p, d2 = *d2p, d3 = *d3p, d4 = *d4p, d5 = *d5p, d6 = *d6p, d7 = *d7p; + float z1, z2, z3, z4, z5, z11, z13; + + float tmp0 = d0 + d7; + float tmp7 = d0 - d7; + float tmp1 = d1 + d6; + float tmp6 = d1 - d6; + float tmp2 = d2 + d5; + float tmp5 = d2 - d5; + float tmp3 = d3 + d4; + float tmp4 = d3 - d4; + + // Even part + float tmp10 = tmp0 + tmp3; // phase 2 + float tmp13 = tmp0 - tmp3; + float tmp11 = tmp1 + tmp2; + float tmp12 = tmp1 - tmp2; + + d0 = tmp10 + tmp11; // phase 3 + d4 = tmp10 - tmp11; + + z1 = (tmp12 + tmp13) * 0.707106781f; // c4 + d2 = tmp13 + z1; // phase 5 + d6 = tmp13 - z1; + + // Odd part + tmp10 = tmp4 + tmp5; // phase 2 + tmp11 = tmp5 + tmp6; + tmp12 = tmp6 + tmp7; + + // The rotator is modified from fig 4-8 to avoid extra negations. + z5 = (tmp10 - tmp12) * 0.382683433f; // c6 + z2 = tmp10 * 0.541196100f + z5; // c2-c6 + z4 = tmp12 * 1.306562965f + z5; // c2+c6 + z3 = tmp11 * 0.707106781f; // c4 + + z11 = tmp7 + z3; // phase 5 + z13 = tmp7 - z3; + + *d5p = z13 + z2; // phase 6 + *d3p = z13 - z2; + *d1p = z11 + z4; + *d7p = z11 - z4; + + *d0p = d0; *d2p = d2; *d4p = d4; *d6p = d6; +} + +static void stbiw__jpg_calcBits(int val, unsigned short bits[2]) { + int tmp1 = val < 0 ? -val : val; + val = val < 0 ? val-1 : val; + bits[1] = 1; + while(tmp1 >>= 1) { + ++bits[1]; + } + bits[0] = val & ((1<0)&&(DU[end0pos]==0); --end0pos) { + } + // end0pos = first element in reverse order !=0 + if(end0pos == 0) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + return DU[0]; + } + for(i = 1; i <= end0pos; ++i) { + int startpos = i; + int nrzeroes; + unsigned short bits[2]; + for (; DU[i]==0 && i<=end0pos; ++i) { + } + nrzeroes = i-startpos; + if ( nrzeroes >= 16 ) { + int lng = nrzeroes>>4; + int nrmarker; + for (nrmarker=1; nrmarker <= lng; ++nrmarker) + stbiw__jpg_writeBits(s, bitBuf, bitCnt, M16zeroes); + nrzeroes &= 15; + } + stbiw__jpg_calcBits(DU[i], bits); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, HTAC[(nrzeroes<<4)+bits[1]]); + stbiw__jpg_writeBits(s, bitBuf, bitCnt, bits); + } + if(end0pos != 63) { + stbiw__jpg_writeBits(s, bitBuf, bitCnt, EOB); + } + return DU[0]; +} + +static int stbi_write_jpg_core(stbi__write_context *s, int width, int height, int comp, const void* data, int quality) { + // Constants that don't pollute global namespace + static const unsigned char std_dc_luminance_nrcodes[] = {0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0}; + static const unsigned char std_dc_luminance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_luminance_nrcodes[] = {0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,0x7d}; + static const unsigned char std_ac_luminance_values[] = { + 0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xa1,0x08, + 0x23,0x42,0xb1,0xc1,0x15,0x52,0xd1,0xf0,0x24,0x33,0x62,0x72,0x82,0x09,0x0a,0x16,0x17,0x18,0x19,0x1a,0x25,0x26,0x27,0x28, + 0x29,0x2a,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58,0x59, + 0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x83,0x84,0x85,0x86,0x87,0x88,0x89, + 0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4,0xb5,0xb6, + 0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xe1,0xe2, + 0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + static const unsigned char std_dc_chrominance_nrcodes[] = {0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0}; + static const unsigned char std_dc_chrominance_values[] = {0,1,2,3,4,5,6,7,8,9,10,11}; + static const unsigned char std_ac_chrominance_nrcodes[] = {0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,0x77}; + static const unsigned char std_ac_chrominance_values[] = { + 0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91, + 0xa1,0xb1,0xc1,0x09,0x23,0x33,0x52,0xf0,0x15,0x62,0x72,0xd1,0x0a,0x16,0x24,0x34,0xe1,0x25,0xf1,0x17,0x18,0x19,0x1a,0x26, + 0x27,0x28,0x29,0x2a,0x35,0x36,0x37,0x38,0x39,0x3a,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x53,0x54,0x55,0x56,0x57,0x58, + 0x59,0x5a,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x82,0x83,0x84,0x85,0x86,0x87, + 0x88,0x89,0x8a,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xb2,0xb3,0xb4, + 0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda, + 0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa + }; + // Huffman tables + static const unsigned short YDC_HT[256][2] = { {0,2},{2,3},{3,3},{4,3},{5,3},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9}}; + static const unsigned short UVDC_HT[256][2] = { {0,2},{1,2},{2,2},{6,3},{14,4},{30,5},{62,6},{126,7},{254,8},{510,9},{1022,10},{2046,11}}; + static const unsigned short YAC_HT[256][2] = { + {10,4},{0,2},{1,2},{4,3},{11,4},{26,5},{120,7},{248,8},{1014,10},{65410,16},{65411,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {12,4},{27,5},{121,7},{502,9},{2038,11},{65412,16},{65413,16},{65414,16},{65415,16},{65416,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {28,5},{249,8},{1015,10},{4084,12},{65417,16},{65418,16},{65419,16},{65420,16},{65421,16},{65422,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{503,9},{4085,12},{65423,16},{65424,16},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1016,10},{65430,16},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2039,11},{65438,16},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {123,7},{4086,12},{65446,16},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {250,8},{4087,12},{65454,16},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{32704,15},{65462,16},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65470,16},{65471,16},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65479,16},{65480,16},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1017,10},{65488,16},{65489,16},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{65497,16},{65498,16},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2040,11},{65506,16},{65507,16},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {65515,16},{65516,16},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65525,16},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const unsigned short UVAC_HT[256][2] = { + {0,2},{1,2},{4,3},{10,4},{24,5},{25,5},{56,6},{120,7},{500,9},{1014,10},{4084,12},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {11,4},{57,6},{246,8},{501,9},{2038,11},{4085,12},{65416,16},{65417,16},{65418,16},{65419,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {26,5},{247,8},{1015,10},{4086,12},{32706,15},{65420,16},{65421,16},{65422,16},{65423,16},{65424,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {27,5},{248,8},{1016,10},{4087,12},{65425,16},{65426,16},{65427,16},{65428,16},{65429,16},{65430,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {58,6},{502,9},{65431,16},{65432,16},{65433,16},{65434,16},{65435,16},{65436,16},{65437,16},{65438,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {59,6},{1017,10},{65439,16},{65440,16},{65441,16},{65442,16},{65443,16},{65444,16},{65445,16},{65446,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {121,7},{2039,11},{65447,16},{65448,16},{65449,16},{65450,16},{65451,16},{65452,16},{65453,16},{65454,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {122,7},{2040,11},{65455,16},{65456,16},{65457,16},{65458,16},{65459,16},{65460,16},{65461,16},{65462,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {249,8},{65463,16},{65464,16},{65465,16},{65466,16},{65467,16},{65468,16},{65469,16},{65470,16},{65471,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {503,9},{65472,16},{65473,16},{65474,16},{65475,16},{65476,16},{65477,16},{65478,16},{65479,16},{65480,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {504,9},{65481,16},{65482,16},{65483,16},{65484,16},{65485,16},{65486,16},{65487,16},{65488,16},{65489,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {505,9},{65490,16},{65491,16},{65492,16},{65493,16},{65494,16},{65495,16},{65496,16},{65497,16},{65498,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {506,9},{65499,16},{65500,16},{65501,16},{65502,16},{65503,16},{65504,16},{65505,16},{65506,16},{65507,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {2041,11},{65508,16},{65509,16},{65510,16},{65511,16},{65512,16},{65513,16},{65514,16},{65515,16},{65516,16},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, + {16352,14},{65517,16},{65518,16},{65519,16},{65520,16},{65521,16},{65522,16},{65523,16},{65524,16},{65525,16},{0,0},{0,0},{0,0},{0,0},{0,0}, + {1018,10},{32707,15},{65526,16},{65527,16},{65528,16},{65529,16},{65530,16},{65531,16},{65532,16},{65533,16},{65534,16},{0,0},{0,0},{0,0},{0,0},{0,0} + }; + static const int YQT[] = {16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22, + 37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99}; + static const int UVQT[] = {17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99, + 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99}; + static const float aasf[] = { 1.0f * 2.828427125f, 1.387039845f * 2.828427125f, 1.306562965f * 2.828427125f, 1.175875602f * 2.828427125f, + 1.0f * 2.828427125f, 0.785694958f * 2.828427125f, 0.541196100f * 2.828427125f, 0.275899379f * 2.828427125f }; + + int row, col, i, k; + float fdtbl_Y[64], fdtbl_UV[64]; + unsigned char YTable[64], UVTable[64]; + + if(!data || !width || !height || comp > 4 || comp < 1) { + return 0; + } + + quality = quality ? quality : 90; + quality = quality < 1 ? 1 : quality > 100 ? 100 : quality; + quality = quality < 50 ? 5000 / quality : 200 - quality * 2; + + for(i = 0; i < 64; ++i) { + int uvti, yti = (YQT[i]*quality+50)/100; + YTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (yti < 1 ? 1 : yti > 255 ? 255 : yti); + uvti = (UVQT[i]*quality+50)/100; + UVTable[stbiw__jpg_ZigZag[i]] = (unsigned char) (uvti < 1 ? 1 : uvti > 255 ? 255 : uvti); + } + + for(row = 0, k = 0; row < 8; ++row) { + for(col = 0; col < 8; ++col, ++k) { + fdtbl_Y[k] = 1 / (YTable [stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + fdtbl_UV[k] = 1 / (UVTable[stbiw__jpg_ZigZag[k]] * aasf[row] * aasf[col]); + } + } + + // Write Headers + { + static const unsigned char head0[] = { 0xFF,0xD8,0xFF,0xE0,0,0x10,'J','F','I','F',0,1,1,0,0,1,0,1,0,0,0xFF,0xDB,0,0x84,0 }; + static const unsigned char head2[] = { 0xFF,0xDA,0,0xC,3,1,0,2,0x11,3,0x11,0,0x3F,0 }; + const unsigned char head1[] = { 0xFF,0xC0,0,0x11,8,(unsigned char)(height>>8),STBIW_UCHAR(height),(unsigned char)(width>>8),STBIW_UCHAR(width), + 3,1,0x11,0,2,0x11,1,3,0x11,1,0xFF,0xC4,0x01,0xA2,0 }; + s->func(s->context, (void*)head0, sizeof(head0)); + s->func(s->context, (void*)YTable, sizeof(YTable)); + stbiw__putc(s, 1); + s->func(s->context, UVTable, sizeof(UVTable)); + s->func(s->context, (void*)head1, sizeof(head1)); + s->func(s->context, (void*)(std_dc_luminance_nrcodes+1), sizeof(std_dc_luminance_nrcodes)-1); + s->func(s->context, (void*)std_dc_luminance_values, sizeof(std_dc_luminance_values)); + stbiw__putc(s, 0x10); // HTYACinfo + s->func(s->context, (void*)(std_ac_luminance_nrcodes+1), sizeof(std_ac_luminance_nrcodes)-1); + s->func(s->context, (void*)std_ac_luminance_values, sizeof(std_ac_luminance_values)); + stbiw__putc(s, 1); // HTUDCinfo + s->func(s->context, (void*)(std_dc_chrominance_nrcodes+1), sizeof(std_dc_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_dc_chrominance_values, sizeof(std_dc_chrominance_values)); + stbiw__putc(s, 0x11); // HTUACinfo + s->func(s->context, (void*)(std_ac_chrominance_nrcodes+1), sizeof(std_ac_chrominance_nrcodes)-1); + s->func(s->context, (void*)std_ac_chrominance_values, sizeof(std_ac_chrominance_values)); + s->func(s->context, (void*)head2, sizeof(head2)); + } + + // Encode 8x8 macroblocks + { + static const unsigned short fillBits[] = {0x7F, 7}; + const unsigned char *imageData = (const unsigned char *)data; + int DCY=0, DCU=0, DCV=0; + int bitBuf=0, bitCnt=0; + // comp == 2 is grey+alpha (alpha is ignored) + int ofsG = comp > 2 ? 1 : 0, ofsB = comp > 2 ? 2 : 0; + int x, y, pos; + for(y = 0; y < height; y += 8) { + for(x = 0; x < width; x += 8) { + float YDU[64], UDU[64], VDU[64]; + for(row = y, pos = 0; row < y+8; ++row) { + for(col = x; col < x+8; ++col, ++pos) { + int p = (stbi__flip_vertically_on_write ? height-1-row : row)*width*comp + col*comp; + float r, g, b; + if(row >= height) { + p -= width*comp*(row+1 - height); + } + if(col >= width) { + p -= comp*(col+1 - width); + } + + r = imageData[p+0]; + g = imageData[p+ofsG]; + b = imageData[p+ofsB]; + YDU[pos]=+0.29900f*r+0.58700f*g+0.11400f*b-128; + UDU[pos]=-0.16874f*r-0.33126f*g+0.50000f*b; + VDU[pos]=+0.50000f*r-0.41869f*g-0.08131f*b; + } + } + + DCY = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT); + DCU = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT); + DCV = stbiw__jpg_processDU(s, &bitBuf, &bitCnt, VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT); + } + } + + // Do the bit alignment of the EOI marker + stbiw__jpg_writeBits(s, &bitBuf, &bitCnt, fillBits); + } + + // EOI + stbiw__putc(s, 0xFF); + stbiw__putc(s, 0xD9); + + return 1; +} + +STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + stbi__start_write_callbacks(&s, func, context); + return stbi_write_jpg_core(&s, x, y, comp, (void *) data, quality); +} + + +#ifndef STBI_WRITE_NO_STDIO +STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality) +{ + stbi__write_context s; + if (stbi__start_write_file(&s,filename)) { + int r = stbi_write_jpg_core(&s, x, y, comp, data, quality); + stbi__end_write_file(&s); + return r; + } else + return 0; +} +#endif + +#endif // STB_IMAGE_WRITE_IMPLEMENTATION + +/* Revision history + 1.09 (2018-02-11) + fix typo in zlib quality API, improve STB_I_W_STATIC in C++ + 1.08 (2018-01-29) + add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter + 1.07 (2017-07-24) + doc fix + 1.06 (2017-07-23) + writing JPEG (using Jon Olick's code) + 1.05 ??? + 1.04 (2017-03-03) + monochrome BMP expansion + 1.03 ??? + 1.02 (2016-04-02) + avoid allocating large structures on the stack + 1.01 (2016-01-16) + STBIW_REALLOC_SIZED: support allocators with no realloc support + avoid race-condition in crc initialization + minor compile issues + 1.00 (2015-09-14) + installable file IO function + 0.99 (2015-09-13) + warning fixes; TGA rle support + 0.98 (2015-04-08) + added STBIW_MALLOC, STBIW_ASSERT etc + 0.97 (2015-01-18) + fixed HDR asserts, rewrote HDR rle logic + 0.96 (2015-01-17) + add HDR output + fix monochrome BMP + 0.95 (2014-08-17) + add monochrome TGA output + 0.94 (2014-05-31) + rename private functions to avoid conflicts with stb_image.h + 0.93 (2014-05-27) + warning fixes + 0.92 (2010-08-01) + casts to unsigned char to fix warnings + 0.91 (2010-07-17) + first public release + 0.90 first internal release +*/ + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/tree.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/tree.c" new file mode 100644 index 00000000..67b6d431 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/tree.c" @@ -0,0 +1,139 @@ +#include +#include +#include "tree.h" +#include "utils.h" +#include "data.h" + +void change_leaves(tree *t, char *leaf_list) +{ + list *llist = get_paths(leaf_list); + char **leaves = (char **)list_to_array(llist); + int n = llist->size; + int i,j; + int found = 0; + for(i = 0; i < t->n; ++i){ + t->leaf[i] = 0; + for(j = 0; j < n; ++j){ + if (0==strcmp(t->name[i], leaves[j])){ + t->leaf[i] = 1; + ++found; + break; + } + } + } + fprintf(stderr, "Found %d leaves.\n", found); +} + +float get_hierarchy_probability(float *x, tree *hier, int c, int stride) +{ + float p = 1; + while(c >= 0){ + p = p * x[c*stride]; + c = hier->parent[c]; + } + return p; +} + +void hierarchy_predictions(float *predictions, int n, tree *hier, int only_leaves, int stride) +{ + int j; + for(j = 0; j < n; ++j){ + int parent = hier->parent[j]; + if(parent >= 0){ + predictions[j*stride] *= predictions[parent*stride]; + } + } + if(only_leaves){ + for(j = 0; j < n; ++j){ + if(!hier->leaf[j]) predictions[j*stride] = 0; + } + } +} + +int hierarchy_top_prediction(float *predictions, tree *hier, float thresh, int stride) +{ + float p = 1; + int group = 0; + int i; + while(1){ + float max = 0; + int max_i = 0; + + for(i = 0; i < hier->group_size[group]; ++i){ + int index = i + hier->group_offset[group]; + float val = predictions[(i + hier->group_offset[group])*stride]; + if(val > max){ + max_i = index; + max = val; + } + } + if(p*max > thresh){ + p = p*max; + group = hier->child[max_i]; + if(hier->child[max_i] < 0) return max_i; + } else if (group == 0){ + return max_i; + } else { + return hier->parent[hier->group_offset[group]]; + } + } + return 0; +} + +tree *read_tree(char *filename) +{ + tree t = {0}; + FILE *fp = fopen(filename, "r"); + + char *line; + int last_parent = -1; + int group_size = 0; + int groups = 0; + int n = 0; + while((line=fgetl(fp)) != 0){ + char *id = calloc(256, sizeof(char)); + int parent = -1; + sscanf(line, "%s %d", id, &parent); + t.parent = realloc(t.parent, (n+1)*sizeof(int)); + t.parent[n] = parent; + + t.child = realloc(t.child, (n+1)*sizeof(int)); + t.child[n] = -1; + + t.name = realloc(t.name, (n+1)*sizeof(char *)); + t.name[n] = id; + if(parent != last_parent){ + ++groups; + t.group_offset = realloc(t.group_offset, groups * sizeof(int)); + t.group_offset[groups - 1] = n - group_size; + t.group_size = realloc(t.group_size, groups * sizeof(int)); + t.group_size[groups - 1] = group_size; + group_size = 0; + last_parent = parent; + } + t.group = realloc(t.group, (n+1)*sizeof(int)); + t.group[n] = groups; + if (parent >= 0) { + t.child[parent] = groups; + } + ++n; + ++group_size; + } + ++groups; + t.group_offset = realloc(t.group_offset, groups * sizeof(int)); + t.group_offset[groups - 1] = n - group_size; + t.group_size = realloc(t.group_size, groups * sizeof(int)); + t.group_size[groups - 1] = group_size; + t.n = n; + t.groups = groups; + t.leaf = calloc(n, sizeof(int)); + int i; + for(i = 0; i < n; ++i) t.leaf[i] = 1; + for(i = 0; i < n; ++i) if(t.parent[i] >= 0) t.leaf[t.parent[i]] = 0; + + fclose(fp); + tree *tree_ptr = calloc(1, sizeof(tree)); + *tree_ptr = t; + //error(0); + return tree_ptr; +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/tree.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/tree.h" new file mode 100644 index 00000000..3802b8ea --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/tree.h" @@ -0,0 +1,8 @@ +#ifndef TREE_H +#define TREE_H +#include "darknet.h" + +int hierarchy_top_prediction(float *predictions, tree *hier, float thresh, int stride); +float get_hierarchy_probability(float *x, tree *hier, int c, int stride); + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/upsample_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/upsample_layer.c" new file mode 100644 index 00000000..605f21f8 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/upsample_layer.c" @@ -0,0 +1,106 @@ +#include "upsample_layer.h" +#include "cuda.h" +#include "blas.h" + +#include + +layer make_upsample_layer(int batch, int w, int h, int c, int stride) +{ + layer l = {0}; + l.type = UPSAMPLE; + l.batch = batch; + l.w = w; + l.h = h; + l.c = c; + l.out_w = w*stride; + l.out_h = h*stride; + l.out_c = c; + if(stride < 0){ + stride = -stride; + l.reverse=1; + l.out_w = w/stride; + l.out_h = h/stride; + } + l.stride = stride; + l.outputs = l.out_w*l.out_h*l.out_c; + l.inputs = l.w*l.h*l.c; + l.delta = calloc(l.outputs*batch, sizeof(float)); + l.output = calloc(l.outputs*batch, sizeof(float));; + + l.forward = forward_upsample_layer; + l.backward = backward_upsample_layer; + #ifdef GPU + l.forward_gpu = forward_upsample_layer_gpu; + l.backward_gpu = backward_upsample_layer_gpu; + + l.delta_gpu = cuda_make_array(l.delta, l.outputs*batch); + l.output_gpu = cuda_make_array(l.output, l.outputs*batch); + #endif + if(l.reverse) fprintf(stderr, "downsample %2dx %4d x%4d x%4d -> %4d x%4d x%4d\n", stride, w, h, c, l.out_w, l.out_h, l.out_c); + else fprintf(stderr, "upsample %2dx %4d x%4d x%4d -> %4d x%4d x%4d\n", stride, w, h, c, l.out_w, l.out_h, l.out_c); + return l; +} + +void resize_upsample_layer(layer *l, int w, int h) +{ + l->w = w; + l->h = h; + l->out_w = w*l->stride; + l->out_h = h*l->stride; + if(l->reverse){ + l->out_w = w/l->stride; + l->out_h = h/l->stride; + } + l->outputs = l->out_w*l->out_h*l->out_c; + l->inputs = l->h*l->w*l->c; + l->delta = realloc(l->delta, l->outputs*l->batch*sizeof(float)); + l->output = realloc(l->output, l->outputs*l->batch*sizeof(float)); + +#ifdef GPU + cuda_free(l->output_gpu); + cuda_free(l->delta_gpu); + l->output_gpu = cuda_make_array(l->output, l->outputs*l->batch); + l->delta_gpu = cuda_make_array(l->delta, l->outputs*l->batch); +#endif + +} + +void forward_upsample_layer(const layer l, network net) +{ + fill_cpu(l.outputs*l.batch, 0, l.output, 1); + if(l.reverse){ + upsample_cpu(l.output, l.out_w, l.out_h, l.c, l.batch, l.stride, 0, l.scale, net.input); + }else{ + upsample_cpu(net.input, l.w, l.h, l.c, l.batch, l.stride, 1, l.scale, l.output); + } +} + +void backward_upsample_layer(const layer l, network net) +{ + if(l.reverse){ + upsample_cpu(l.delta, l.out_w, l.out_h, l.c, l.batch, l.stride, 1, l.scale, net.delta); + }else{ + upsample_cpu(net.delta, l.w, l.h, l.c, l.batch, l.stride, 0, l.scale, l.delta); + } +} + +#ifdef GPU +void forward_upsample_layer_gpu(const layer l, network net) +{ + fill_gpu(l.outputs*l.batch, 0, l.output_gpu, 1); + if(l.reverse){ + upsample_gpu(l.output_gpu, l.out_w, l.out_h, l.c, l.batch, l.stride, 0, l.scale, net.input_gpu); + }else{ + upsample_gpu(net.input_gpu, l.w, l.h, l.c, l.batch, l.stride, 1, l.scale, l.output_gpu); + } +} + +void backward_upsample_layer_gpu(const layer l, network net) +{ + if(l.reverse){ + upsample_gpu(l.delta_gpu, l.out_w, l.out_h, l.c, l.batch, l.stride, 1, l.scale, net.delta_gpu); + }else{ + upsample_gpu(net.delta_gpu, l.w, l.h, l.c, l.batch, l.stride, 0, l.scale, l.delta_gpu); + } +} +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/upsample_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/upsample_layer.h" new file mode 100644 index 00000000..86790d10 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/upsample_layer.h" @@ -0,0 +1,15 @@ +#ifndef UPSAMPLE_LAYER_H +#define UPSAMPLE_LAYER_H +#include "darknet.h" + +layer make_upsample_layer(int batch, int w, int h, int c, int stride); +void forward_upsample_layer(const layer l, network net); +void backward_upsample_layer(const layer l, network net); +void resize_upsample_layer(layer *l, int w, int h); + +#ifdef GPU +void forward_upsample_layer_gpu(const layer l, network net); +void backward_upsample_layer_gpu(const layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/utils.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/utils.c" new file mode 100644 index 00000000..626b4678 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/utils.c" @@ -0,0 +1,726 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "utils.h" + + +/* +// old timing. is it better? who knows!! +double get_wall_time() +{ + struct timeval time; + if (gettimeofday(&time,NULL)){ + return 0; + } + return (double)time.tv_sec + (double)time.tv_usec * .000001; +} +*/ + +double what_time_is_it_now() +{ + struct timeval time; + if (gettimeofday(&time,NULL)){ + return 0; + } + return (double)time.tv_sec + (double)time.tv_usec * .000001; +} + +int *read_intlist(char *gpu_list, int *ngpus, int d) +{ + int *gpus = 0; + if(gpu_list){ + int len = strlen(gpu_list); + *ngpus = 1; + int i; + for(i = 0; i < len; ++i){ + if (gpu_list[i] == ',') ++*ngpus; + } + gpus = calloc(*ngpus, sizeof(int)); + for(i = 0; i < *ngpus; ++i){ + gpus[i] = atoi(gpu_list); + gpu_list = strchr(gpu_list, ',')+1; + } + } else { + gpus = calloc(1, sizeof(float)); + *gpus = d; + *ngpus = 1; + } + return gpus; +} + +int *read_map(char *filename) +{ + int n = 0; + int *map = 0; + char *str; + FILE *file = fopen(filename, "r"); + if(!file) file_error(filename); + while((str=fgetl(file))){ + ++n; + map = realloc(map, n*sizeof(int)); + map[n-1] = atoi(str); + } + return map; +} + +void sorta_shuffle(void *arr, size_t n, size_t size, size_t sections) +{ + size_t i; + for(i = 0; i < sections; ++i){ + size_t start = n*i/sections; + size_t end = n*(i+1)/sections; + size_t num = end-start; + shuffle(arr+(start*size), num, size); + } +} + +void shuffle(void *arr, size_t n, size_t size) +{ + size_t i; + void *swp = calloc(1, size); + for(i = 0; i < n-1; ++i){ + size_t j = i + rand()/(RAND_MAX / (n-i)+1); + memcpy(swp, arr+(j*size), size); + memcpy(arr+(j*size), arr+(i*size), size); + memcpy(arr+(i*size), swp, size); + } +} + +int *random_index_order(int min, int max) +{ + int *inds = calloc(max-min, sizeof(int)); + int i; + for(i = min; i < max; ++i){ + inds[i] = i; + } + for(i = min; i < max-1; ++i){ + int swap = inds[i]; + int index = i + rand()%(max-i); + inds[i] = inds[index]; + inds[index] = swap; + } + return inds; +} + +void del_arg(int argc, char **argv, int index) +{ + int i; + for(i = index; i < argc-1; ++i) argv[i] = argv[i+1]; + argv[i] = 0; +} + +int find_arg(int argc, char* argv[], char *arg) +{ + int i; + for(i = 0; i < argc; ++i) { + if(!argv[i]) continue; + if(0==strcmp(argv[i], arg)) { + del_arg(argc, argv, i); + return 1; + } + } + return 0; +} + +int find_int_arg(int argc, char **argv, char *arg, int def) +{ + int i; + for(i = 0; i < argc-1; ++i){ + if(!argv[i]) continue; + if(0==strcmp(argv[i], arg)){ + def = atoi(argv[i+1]); + del_arg(argc, argv, i); + del_arg(argc, argv, i); + break; + } + } + return def; +} + +float find_float_arg(int argc, char **argv, char *arg, float def) +{ + int i; + for(i = 0; i < argc-1; ++i){ + if(!argv[i]) continue; + if(0==strcmp(argv[i], arg)){ + def = atof(argv[i+1]); + del_arg(argc, argv, i); + del_arg(argc, argv, i); + break; + } + } + return def; +} + +char *find_char_arg(int argc, char **argv, char *arg, char *def) +{ + int i; + for(i = 0; i < argc-1; ++i){ + if(!argv[i]) continue; + if(0==strcmp(argv[i], arg)){ + def = argv[i+1]; + del_arg(argc, argv, i); + del_arg(argc, argv, i); + break; + } + } + return def; +} + + +char *basecfg(char *cfgfile) +{ + char *c = cfgfile; + char *next; + while((next = strchr(c, '/'))) + { + c = next+1; + } + c = copy_string(c); + next = strchr(c, '.'); + if (next) *next = 0; + return c; +} + +int alphanum_to_int(char c) +{ + return (c < 58) ? c - 48 : c-87; +} +char int_to_alphanum(int i) +{ + if (i == 36) return '.'; + return (i < 10) ? i + 48 : i + 87; +} + +void pm(int M, int N, float *A) +{ + int i,j; + for(i =0 ; i < M; ++i){ + printf("%d ", i+1); + for(j = 0; j < N; ++j){ + printf("%2.4f, ", A[i*N+j]); + } + printf("\n"); + } + printf("\n"); +} + +void find_replace(char *str, char *orig, char *rep, char *output) +{ + char buffer[4096] = {0}; + char *p; + + sprintf(buffer, "%s", str); + if(!(p = strstr(buffer, orig))){ // Is 'orig' even in 'str'? + sprintf(output, "%s", str); + return; + } + + *p = '\0'; + + sprintf(output, "%s%s%s", buffer, rep, p+strlen(orig)); +} + +float sec(clock_t clocks) +{ + return (float)clocks/CLOCKS_PER_SEC; +} + +void top_k(float *a, int n, int k, int *index) +{ + int i,j; + for(j = 0; j < k; ++j) index[j] = -1; + for(i = 0; i < n; ++i){ + int curr = i; + for(j = 0; j < k; ++j){ + if((index[j] < 0) || a[curr] > a[index[j]]){ + int swap = curr; + curr = index[j]; + index[j] = swap; + } + } + } +} + +void error(const char *s) +{ + perror(s); + assert(0); + exit(-1); +} + +unsigned char *read_file(char *filename) +{ + FILE *fp = fopen(filename, "rb"); + size_t size; + + fseek(fp, 0, SEEK_END); + size = ftell(fp); + fseek(fp, 0, SEEK_SET); + + unsigned char *text = calloc(size+1, sizeof(char)); + fread(text, 1, size, fp); + fclose(fp); + return text; +} + +void malloc_error() +{ + fprintf(stderr, "Malloc error\n"); + exit(-1); +} + +void file_error(char *s) +{ + fprintf(stderr, "Couldn't open file: %s\n", s); + exit(0); +} + +list *split_str(char *s, char delim) +{ + size_t i; + size_t len = strlen(s); + list *l = make_list(); + list_insert(l, s); + for(i = 0; i < len; ++i){ + if(s[i] == delim){ + s[i] = '\0'; + list_insert(l, &(s[i+1])); + } + } + return l; +} + +void strip(char *s) +{ + size_t i; + size_t len = strlen(s); + size_t offset = 0; + for(i = 0; i < len; ++i){ + char c = s[i]; + if(c==' '||c=='\t'||c=='\n') ++offset; + else s[i-offset] = c; + } + s[len-offset] = '\0'; +} + +void strip_char(char *s, char bad) +{ + size_t i; + size_t len = strlen(s); + size_t offset = 0; + for(i = 0; i < len; ++i){ + char c = s[i]; + if(c==bad) ++offset; + else s[i-offset] = c; + } + s[len-offset] = '\0'; +} + +void free_ptrs(void **ptrs, int n) +{ + int i; + for(i = 0; i < n; ++i) free(ptrs[i]); + free(ptrs); +} + +char *fgetl(FILE *fp) +{ + if(feof(fp)) return 0; + size_t size = 512; + char *line = malloc(size*sizeof(char)); + if(!fgets(line, size, fp)){ + free(line); + return 0; + } + + size_t curr = strlen(line); + + while((line[curr-1] != '\n') && !feof(fp)){ + if(curr == size-1){ + size *= 2; + line = realloc(line, size*sizeof(char)); + if(!line) { + printf("%ld\n", size); + malloc_error(); + } + } + size_t readsize = size-curr; + if(readsize > INT_MAX) readsize = INT_MAX-1; + fgets(&line[curr], readsize, fp); + curr = strlen(line); + } + if(line[curr-1] == '\n') line[curr-1] = '\0'; + + return line; +} + +int read_int(int fd) +{ + int n = 0; + int next = read(fd, &n, sizeof(int)); + if(next <= 0) return -1; + return n; +} + +void write_int(int fd, int n) +{ + int next = write(fd, &n, sizeof(int)); + if(next <= 0) error("read failed"); +} + +int read_all_fail(int fd, char *buffer, size_t bytes) +{ + size_t n = 0; + while(n < bytes){ + int next = read(fd, buffer + n, bytes-n); + if(next <= 0) return 1; + n += next; + } + return 0; +} + +int write_all_fail(int fd, char *buffer, size_t bytes) +{ + size_t n = 0; + while(n < bytes){ + size_t next = write(fd, buffer + n, bytes-n); + if(next <= 0) return 1; + n += next; + } + return 0; +} + +void read_all(int fd, char *buffer, size_t bytes) +{ + size_t n = 0; + while(n < bytes){ + int next = read(fd, buffer + n, bytes-n); + if(next <= 0) error("read failed"); + n += next; + } +} + +void write_all(int fd, char *buffer, size_t bytes) +{ + size_t n = 0; + while(n < bytes){ + size_t next = write(fd, buffer + n, bytes-n); + if(next <= 0) error("write failed"); + n += next; + } +} + + +char *copy_string(char *s) +{ + char *copy = malloc(strlen(s)+1); + strncpy(copy, s, strlen(s)+1); + return copy; +} + +list *parse_csv_line(char *line) +{ + list *l = make_list(); + char *c, *p; + int in = 0; + for(c = line, p = line; *c != '\0'; ++c){ + if(*c == '"') in = !in; + else if(*c == ',' && !in){ + *c = '\0'; + list_insert(l, copy_string(p)); + p = c+1; + } + } + list_insert(l, copy_string(p)); + return l; +} + +int count_fields(char *line) +{ + int count = 0; + int done = 0; + char *c; + for(c = line; !done; ++c){ + done = (*c == '\0'); + if(*c == ',' || done) ++count; + } + return count; +} + +float *parse_fields(char *line, int n) +{ + float *field = calloc(n, sizeof(float)); + char *c, *p, *end; + int count = 0; + int done = 0; + for(c = line, p = line; !done; ++c){ + done = (*c == '\0'); + if(*c == ',' || done){ + *c = '\0'; + field[count] = strtod(p, &end); + if(p == c) field[count] = nan(""); + if(end != c && (end != c-1 || *end != '\r')) field[count] = nan(""); //DOS file formats! + p = c+1; + ++count; + } + } + return field; +} + +float sum_array(float *a, int n) +{ + int i; + float sum = 0; + for(i = 0; i < n; ++i) sum += a[i]; + return sum; +} + +float mean_array(float *a, int n) +{ + return sum_array(a,n)/n; +} + +void mean_arrays(float **a, int n, int els, float *avg) +{ + int i; + int j; + memset(avg, 0, els*sizeof(float)); + for(j = 0; j < n; ++j){ + for(i = 0; i < els; ++i){ + avg[i] += a[j][i]; + } + } + for(i = 0; i < els; ++i){ + avg[i] /= n; + } +} + +void print_statistics(float *a, int n) +{ + float m = mean_array(a, n); + float v = variance_array(a, n); + printf("MSE: %.6f, Mean: %.6f, Variance: %.6f\n", mse_array(a, n), m, v); +} + +float variance_array(float *a, int n) +{ + int i; + float sum = 0; + float mean = mean_array(a, n); + for(i = 0; i < n; ++i) sum += (a[i] - mean)*(a[i]-mean); + float variance = sum/n; + return variance; +} + +int constrain_int(int a, int min, int max) +{ + if (a < min) return min; + if (a > max) return max; + return a; +} + +float constrain(float min, float max, float a) +{ + if (a < min) return min; + if (a > max) return max; + return a; +} + +float dist_array(float *a, float *b, int n, int sub) +{ + int i; + float sum = 0; + for(i = 0; i < n; i += sub) sum += pow(a[i]-b[i], 2); + return sqrt(sum); +} + +float mse_array(float *a, int n) +{ + int i; + float sum = 0; + for(i = 0; i < n; ++i) sum += a[i]*a[i]; + return sqrt(sum/n); +} + +void normalize_array(float *a, int n) +{ + int i; + float mu = mean_array(a,n); + float sigma = sqrt(variance_array(a,n)); + for(i = 0; i < n; ++i){ + a[i] = (a[i] - mu)/sigma; + } + mu = mean_array(a,n); + sigma = sqrt(variance_array(a,n)); +} + +void translate_array(float *a, int n, float s) +{ + int i; + for(i = 0; i < n; ++i){ + a[i] += s; + } +} + +float mag_array(float *a, int n) +{ + int i; + float sum = 0; + for(i = 0; i < n; ++i){ + sum += a[i]*a[i]; + } + return sqrt(sum); +} + +void scale_array(float *a, int n, float s) +{ + int i; + for(i = 0; i < n; ++i){ + a[i] *= s; + } +} + +int sample_array(float *a, int n) +{ + float sum = sum_array(a, n); + scale_array(a, n, 1./sum); + float r = rand_uniform(0, 1); + int i; + for(i = 0; i < n; ++i){ + r = r - a[i]; + if (r <= 0) return i; + } + return n-1; +} + +int max_int_index(int *a, int n) +{ + if(n <= 0) return -1; + int i, max_i = 0; + int max = a[0]; + for(i = 1; i < n; ++i){ + if(a[i] > max){ + max = a[i]; + max_i = i; + } + } + return max_i; +} + +int max_index(float *a, int n) +{ + if(n <= 0) return -1; + int i, max_i = 0; + float max = a[0]; + for(i = 1; i < n; ++i){ + if(a[i] > max){ + max = a[i]; + max_i = i; + } + } + return max_i; +} + +int int_index(int *a, int val, int n) +{ + int i; + for(i = 0; i < n; ++i){ + if(a[i] == val) return i; + } + return -1; +} + +int rand_int(int min, int max) +{ + if (max < min){ + int s = min; + min = max; + max = s; + } + int r = (rand()%(max - min + 1)) + min; + return r; +} + +// From http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform +float rand_normal() +{ + static int haveSpare = 0; + static double rand1, rand2; + + if(haveSpare) + { + haveSpare = 0; + return sqrt(rand1) * sin(rand2); + } + + haveSpare = 1; + + rand1 = rand() / ((double) RAND_MAX); + if(rand1 < 1e-100) rand1 = 1e-100; + rand1 = -2 * log(rand1); + rand2 = (rand() / ((double) RAND_MAX)) * TWO_PI; + + return sqrt(rand1) * cos(rand2); +} + +/* + float rand_normal() + { + int n = 12; + int i; + float sum= 0; + for(i = 0; i < n; ++i) sum += (float)rand()/RAND_MAX; + return sum-n/2.; + } + */ + +size_t rand_size_t() +{ + return ((size_t)(rand()&0xff) << 56) | + ((size_t)(rand()&0xff) << 48) | + ((size_t)(rand()&0xff) << 40) | + ((size_t)(rand()&0xff) << 32) | + ((size_t)(rand()&0xff) << 24) | + ((size_t)(rand()&0xff) << 16) | + ((size_t)(rand()&0xff) << 8) | + ((size_t)(rand()&0xff) << 0); +} + +float rand_uniform(float min, float max) +{ + if(max < min){ + float swap = min; + min = max; + max = swap; + } + return ((float)rand()/RAND_MAX * (max - min)) + min; +} + +float rand_scale(float s) +{ + float scale = rand_uniform(1, s); + if(rand()%2) return scale; + return 1./scale; +} + +float **one_hot_encode(float *a, int n, int k) +{ + int i; + float **t = calloc(n, sizeof(float*)); + for(i = 0; i < n; ++i){ + t[i] = calloc(k, sizeof(float)); + int index = (int)a[i]; + t[i][index] = 1; + } + return t; +} + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/utils.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/utils.h" new file mode 100644 index 00000000..ef24da79 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/utils.h" @@ -0,0 +1,53 @@ +#ifndef UTILS_H +#define UTILS_H +#include +#include +#include "darknet.h" +#include "list.h" + +#define TIME(a) \ + do { \ + double start = what_time_is_it_now(); \ + a; \ + printf("%s took: %f seconds\n", #a, what_time_is_it_now() - start); \ + } while (0) + +#define TWO_PI 6.2831853071795864769252866f + +double what_time_is_it_now(); +void shuffle(void *arr, size_t n, size_t size); +void sorta_shuffle(void *arr, size_t n, size_t size, size_t sections); +void free_ptrs(void **ptrs, int n); +int alphanum_to_int(char c); +char int_to_alphanum(int i); +int read_int(int fd); +void write_int(int fd, int n); +void read_all(int fd, char *buffer, size_t bytes); +void write_all(int fd, char *buffer, size_t bytes); +int read_all_fail(int fd, char *buffer, size_t bytes); +int write_all_fail(int fd, char *buffer, size_t bytes); +void find_replace(char *str, char *orig, char *rep, char *output); +void malloc_error(); +void file_error(char *s); +void strip(char *s); +void strip_char(char *s, char bad); +list *split_str(char *s, char delim); +char *fgetl(FILE *fp); +list *parse_csv_line(char *line); +char *copy_string(char *s); +int count_fields(char *line); +float *parse_fields(char *line, int n); +void translate_array(float *a, int n, float s); +float constrain(float min, float max, float a); +int constrain_int(int a, int min, int max); +float rand_scale(float s); +int rand_int(int min, int max); +void mean_arrays(float **a, int n, int els, float *avg); +float dist_array(float *a, float *b, int n, int sub); +float **one_hot_encode(float *a, int n, int k); +float sec(clock_t clocks); +void print_statistics(float *a, int n); +int int_index(int *a, int val, int n); + +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/yolo_layer.c" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/yolo_layer.c" new file mode 100644 index 00000000..c3380363 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/yolo_layer.c" @@ -0,0 +1,374 @@ +#include "yolo_layer.h" +#include "activations.h" +#include "blas.h" +#include "box.h" +#include "cuda.h" +#include "utils.h" + +#include +#include +#include +#include + +layer make_yolo_layer(int batch, int w, int h, int n, int total, int *mask, int classes) +{ + int i; + layer l = {0}; + l.type = YOLO; + + l.n = n; + l.total = total; + l.batch = batch; + l.h = h; + l.w = w; + l.c = n*(classes + 4 + 1); + l.out_w = l.w; + l.out_h = l.h; + l.out_c = l.c; + l.classes = classes; + l.cost = calloc(1, sizeof(float)); + l.biases = calloc(total*2, sizeof(float)); + if(mask) l.mask = mask; + else{ + l.mask = calloc(n, sizeof(int)); + for(i = 0; i < n; ++i){ + l.mask[i] = i; + } + } + l.bias_updates = calloc(n*2, sizeof(float)); + l.outputs = h*w*n*(classes + 4 + 1); + l.inputs = l.outputs; + l.truths = 90*(4 + 1); + l.delta = calloc(batch*l.outputs, sizeof(float)); + l.output = calloc(batch*l.outputs, sizeof(float)); + for(i = 0; i < total*2; ++i){ + l.biases[i] = .5; + } + + l.forward = forward_yolo_layer; + l.backward = backward_yolo_layer; +#ifdef GPU + l.forward_gpu = forward_yolo_layer_gpu; + l.backward_gpu = backward_yolo_layer_gpu; + l.output_gpu = cuda_make_array(l.output, batch*l.outputs); + l.delta_gpu = cuda_make_array(l.delta, batch*l.outputs); +#endif + + fprintf(stderr, "yolo\n"); + srand(0); + + return l; +} + +void resize_yolo_layer(layer *l, int w, int h) +{ + l->w = w; + l->h = h; + + l->outputs = h*w*l->n*(l->classes + 4 + 1); + l->inputs = l->outputs; + + l->output = realloc(l->output, l->batch*l->outputs*sizeof(float)); + l->delta = realloc(l->delta, l->batch*l->outputs*sizeof(float)); + +#ifdef GPU + cuda_free(l->delta_gpu); + cuda_free(l->output_gpu); + + l->delta_gpu = cuda_make_array(l->delta, l->batch*l->outputs); + l->output_gpu = cuda_make_array(l->output, l->batch*l->outputs); +#endif +} + +box get_yolo_box(float *x, float *biases, int n, int index, int i, int j, int lw, int lh, int w, int h, int stride) +{ + box b; + b.x = (i + x[index + 0*stride]) / lw; + b.y = (j + x[index + 1*stride]) / lh; + b.w = exp(x[index + 2*stride]) * biases[2*n] / w; + b.h = exp(x[index + 3*stride]) * biases[2*n+1] / h; + return b; +} + +float delta_yolo_box(box truth, float *x, float *biases, int n, int index, int i, int j, int lw, int lh, int w, int h, float *delta, float scale, int stride) +{ + box pred = get_yolo_box(x, biases, n, index, i, j, lw, lh, w, h, stride); + float iou = box_iou(pred, truth); + + float tx = (truth.x*lw - i); + float ty = (truth.y*lh - j); + float tw = log(truth.w*w / biases[2*n]); + float th = log(truth.h*h / biases[2*n + 1]); + + delta[index + 0*stride] = scale * (tx - x[index + 0*stride]); + delta[index + 1*stride] = scale * (ty - x[index + 1*stride]); + delta[index + 2*stride] = scale * (tw - x[index + 2*stride]); + delta[index + 3*stride] = scale * (th - x[index + 3*stride]); + return iou; +} + + +void delta_yolo_class(float *output, float *delta, int index, int class, int classes, int stride, float *avg_cat) +{ + int n; + if (delta[index]){ + delta[index + stride*class] = 1 - output[index + stride*class]; + if(avg_cat) *avg_cat += output[index + stride*class]; + return; + } + for(n = 0; n < classes; ++n){ + delta[index + stride*n] = ((n == class)?1 : 0) - output[index + stride*n]; + if(n == class && avg_cat) *avg_cat += output[index + stride*n]; + } +} + +static int entry_index(layer l, int batch, int location, int entry) +{ + int n = location / (l.w*l.h); + int loc = location % (l.w*l.h); + return batch*l.outputs + n*l.w*l.h*(4+l.classes+1) + entry*l.w*l.h + loc; +} + +void forward_yolo_layer(const layer l, network net) +{ + int i,j,b,t,n; + memcpy(l.output, net.input, l.outputs*l.batch*sizeof(float)); + +#ifndef GPU + for (b = 0; b < l.batch; ++b){ + for(n = 0; n < l.n; ++n){ + int index = entry_index(l, b, n*l.w*l.h, 0); + activate_array(l.output + index, 2*l.w*l.h, LOGISTIC); + index = entry_index(l, b, n*l.w*l.h, 4); + activate_array(l.output + index, (1+l.classes)*l.w*l.h, LOGISTIC); + } + } +#endif + + memset(l.delta, 0, l.outputs * l.batch * sizeof(float)); + if(!net.train) return; + float avg_iou = 0; + float recall = 0; + float recall75 = 0; + float avg_cat = 0; + float avg_obj = 0; + float avg_anyobj = 0; + int count = 0; + int class_count = 0; + *(l.cost) = 0; + for (b = 0; b < l.batch; ++b) { + for (j = 0; j < l.h; ++j) { + for (i = 0; i < l.w; ++i) { + for (n = 0; n < l.n; ++n) { + int box_index = entry_index(l, b, n*l.w*l.h + j*l.w + i, 0); + box pred = get_yolo_box(l.output, l.biases, l.mask[n], box_index, i, j, l.w, l.h, net.w, net.h, l.w*l.h); + float best_iou = 0; + int best_t = 0; + for(t = 0; t < l.max_boxes; ++t){ + box truth = float_to_box(net.truth + t*(4 + 1) + b*l.truths, 1); + if(!truth.x) break; + float iou = box_iou(pred, truth); + if (iou > best_iou) { + best_iou = iou; + best_t = t; + } + } + int obj_index = entry_index(l, b, n*l.w*l.h + j*l.w + i, 4); + avg_anyobj += l.output[obj_index]; + l.delta[obj_index] = 0 - l.output[obj_index]; + if (best_iou > l.ignore_thresh) { + l.delta[obj_index] = 0; + } + if (best_iou > l.truth_thresh) { + l.delta[obj_index] = 1 - l.output[obj_index]; + + int class = net.truth[best_t*(4 + 1) + b*l.truths + 4]; + if (l.map) class = l.map[class]; + int class_index = entry_index(l, b, n*l.w*l.h + j*l.w + i, 4 + 1); + delta_yolo_class(l.output, l.delta, class_index, class, l.classes, l.w*l.h, 0); + box truth = float_to_box(net.truth + best_t*(4 + 1) + b*l.truths, 1); + delta_yolo_box(truth, l.output, l.biases, l.mask[n], box_index, i, j, l.w, l.h, net.w, net.h, l.delta, (2-truth.w*truth.h), l.w*l.h); + } + } + } + } + for(t = 0; t < l.max_boxes; ++t){ + box truth = float_to_box(net.truth + t*(4 + 1) + b*l.truths, 1); + + if(!truth.x) break; + float best_iou = 0; + int best_n = 0; + i = (truth.x * l.w); + j = (truth.y * l.h); + box truth_shift = truth; + truth_shift.x = truth_shift.y = 0; + for(n = 0; n < l.total; ++n){ + box pred = {0}; + pred.w = l.biases[2*n]/net.w; + pred.h = l.biases[2*n+1]/net.h; + float iou = box_iou(pred, truth_shift); + if (iou > best_iou){ + best_iou = iou; + best_n = n; + } + } + + int mask_n = int_index(l.mask, best_n, l.n); + if(mask_n >= 0){ + int box_index = entry_index(l, b, mask_n*l.w*l.h + j*l.w + i, 0); + float iou = delta_yolo_box(truth, l.output, l.biases, best_n, box_index, i, j, l.w, l.h, net.w, net.h, l.delta, (2-truth.w*truth.h), l.w*l.h); + + int obj_index = entry_index(l, b, mask_n*l.w*l.h + j*l.w + i, 4); + avg_obj += l.output[obj_index]; + l.delta[obj_index] = 1 - l.output[obj_index]; + + int class = net.truth[t*(4 + 1) + b*l.truths + 4]; + if (l.map) class = l.map[class]; + int class_index = entry_index(l, b, mask_n*l.w*l.h + j*l.w + i, 4 + 1); + delta_yolo_class(l.output, l.delta, class_index, class, l.classes, l.w*l.h, &avg_cat); + + ++count; + ++class_count; + if(iou > .5) recall += 1; + if(iou > .75) recall75 += 1; + avg_iou += iou; + } + } + } + *(l.cost) = pow(mag_array(l.delta, l.outputs * l.batch), 2); + printf("Region %d Avg IOU: %f, Class: %f, Obj: %f, No Obj: %f, .5R: %f, .75R: %f, count: %d\n", net.index, avg_iou/count, avg_cat/class_count, avg_obj/count, avg_anyobj/(l.w*l.h*l.n*l.batch), recall/count, recall75/count, count); +} + +void backward_yolo_layer(const layer l, network net) +{ + axpy_cpu(l.batch*l.inputs, 1, l.delta, 1, net.delta, 1); +} + +void correct_yolo_boxes(detection *dets, int n, int w, int h, int netw, int neth, int relative) +{ + int i; + int new_w=0; + int new_h=0; + if (((float)netw/w) < ((float)neth/h)) { + new_w = netw; + new_h = (h * netw)/w; + } else { + new_h = neth; + new_w = (w * neth)/h; + } + for (i = 0; i < n; ++i){ + box b = dets[i].bbox; + b.x = (b.x - (netw - new_w)/2./netw) / ((float)new_w/netw); + b.y = (b.y - (neth - new_h)/2./neth) / ((float)new_h/neth); + b.w *= (float)netw/new_w; + b.h *= (float)neth/new_h; + if(!relative){ + b.x *= w; + b.w *= w; + b.y *= h; + b.h *= h; + } + dets[i].bbox = b; + } +} + +int yolo_num_detections(layer l, float thresh) +{ + int i, n; + int count = 0; + for (i = 0; i < l.w*l.h; ++i){ + for(n = 0; n < l.n; ++n){ + int obj_index = entry_index(l, 0, n*l.w*l.h + i, 4); + if(l.output[obj_index] > thresh){ + ++count; + } + } + } + return count; +} + +void avg_flipped_yolo(layer l) +{ + int i,j,n,z; + float *flip = l.output + l.outputs; + for (j = 0; j < l.h; ++j) { + for (i = 0; i < l.w/2; ++i) { + for (n = 0; n < l.n; ++n) { + for(z = 0; z < l.classes + 4 + 1; ++z){ + int i1 = z*l.w*l.h*l.n + n*l.w*l.h + j*l.w + i; + int i2 = z*l.w*l.h*l.n + n*l.w*l.h + j*l.w + (l.w - i - 1); + float swap = flip[i1]; + flip[i1] = flip[i2]; + flip[i2] = swap; + if(z == 0){ + flip[i1] = -flip[i1]; + flip[i2] = -flip[i2]; + } + } + } + } + } + for(i = 0; i < l.outputs; ++i){ + l.output[i] = (l.output[i] + flip[i])/2.; + } +} + +int get_yolo_detections(layer l, int w, int h, int netw, int neth, float thresh, int *map, int relative, detection *dets) +{ + int i,j,n; + float *predictions = l.output; + if (l.batch == 2) avg_flipped_yolo(l); + int count = 0; + for (i = 0; i < l.w*l.h; ++i){ + int row = i / l.w; + int col = i % l.w; + for(n = 0; n < l.n; ++n){ + int obj_index = entry_index(l, 0, n*l.w*l.h + i, 4); + float objectness = predictions[obj_index]; + if(objectness <= thresh) continue; + int box_index = entry_index(l, 0, n*l.w*l.h + i, 0); + dets[count].bbox = get_yolo_box(predictions, l.biases, l.mask[n], box_index, col, row, l.w, l.h, netw, neth, l.w*l.h); + dets[count].objectness = objectness; + dets[count].classes = l.classes; + for(j = 0; j < l.classes; ++j){ + int class_index = entry_index(l, 0, n*l.w*l.h + i, 4 + 1 + j); + float prob = objectness*predictions[class_index]; + dets[count].prob[j] = (prob > thresh) ? prob : 0; + } + ++count; + } + } + correct_yolo_boxes(dets, count, w, h, netw, neth, relative); + return count; +} + +#ifdef GPU + +void forward_yolo_layer_gpu(const layer l, network net) +{ + copy_gpu(l.batch*l.inputs, net.input_gpu, 1, l.output_gpu, 1); + int b, n; + for (b = 0; b < l.batch; ++b){ + for(n = 0; n < l.n; ++n){ + int index = entry_index(l, b, n*l.w*l.h, 0); + activate_array_gpu(l.output_gpu + index, 2*l.w*l.h, LOGISTIC); + index = entry_index(l, b, n*l.w*l.h, 4); + activate_array_gpu(l.output_gpu + index, (1+l.classes)*l.w*l.h, LOGISTIC); + } + } + if(!net.train || l.onlyforward){ + cuda_pull_array(l.output_gpu, l.output, l.batch*l.outputs); + return; + } + + cuda_pull_array(l.output_gpu, net.input, l.batch*l.inputs); + forward_yolo_layer(l, net); + cuda_push_array(l.delta_gpu, l.delta, l.batch*l.outputs); +} + +void backward_yolo_layer_gpu(const layer l, network net) +{ + axpy_gpu(l.batch*l.inputs, 1, l.delta_gpu, 1, net.delta_gpu, 1); +} +#endif + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/yolo_layer.h" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/yolo_layer.h" new file mode 100644 index 00000000..d2a02432 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/DARK/src/yolo_layer.h" @@ -0,0 +1,19 @@ +#ifndef YOLO_LAYER_H +#define YOLO_LAYER_H + +#include "darknet.h" +#include "layer.h" +#include "network.h" + +layer make_yolo_layer(int batch, int w, int h, int n, int total, int *mask, int classes); +void forward_yolo_layer(const layer l, network net); +void backward_yolo_layer(const layer l, network net); +void resize_yolo_layer(layer *l, int w, int h); +int yolo_num_detections(layer l, float thresh); + +#ifdef GPU +void forward_yolo_layer_gpu(const layer l, network net); +void backward_yolo_layer_gpu(layer l, network net); +#endif + +#endif diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/Dockerfile" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/Dockerfile" new file mode 100644 index 00000000..2bce0a04 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/Dockerfile" @@ -0,0 +1,12 @@ +FROM gw000/keras +MAINTAINER Michael CHAN + +WORKDIR /home +COPY . . +RUN pip install -r requirements.txt && pip install jupyter +WORKDIR /home/DARK +RUN make +WORKDIR /home +EXPOSE 9999 + +STOPSIGNAL SIGTERM diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/bin_can/script.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/bin_can/script.py" new file mode 100644 index 00000000..9061a673 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/bin_can/script.py" @@ -0,0 +1,159 @@ +#Imported libraries +import numpy as np +import cv2 +import matplotlib.pyplot as plt +import matplotlib.image as mpimg +from PIL import Image +import os +import sys +from copy import deepcopy +from keras.preprocessing.image import ImageDataGenerator +from math import * + + +#own libs +sys.path.insert(0, 'DARK/python/') +from darknet import * + +############################################################################################################################################################## + +""" Structures for functions """ + +""" Models """ +class Yoloface: + + def __init__(self,thresh=0.2,nms=0.1): + self.__net = load_net("DARK/cfg/cat-dog-yolov3-tiny.cfg".encode("utf-8"), "weights/front_prof_230k.weights".encode("utf-8"), 0) + self.__meta = load_meta("DARK/cfg/cat-dog-obj.data".encode('utf-8')) + self.__thresh = thresh + self.__nms = nms + + def detect(self,img): + return detect_s(self.__net,self.__meta,img,thresh=self.__thresh,nms=self.__nms) + +class Yolobody: + def __init__(self,thresh=0.3,nms=0.1): + self.__net = load_net("DARK/cfg/cat-dog-yolov3-tiny.cfg".encode("utf-8"), "weights/body_500k.weights".encode("utf-8"), 0) + self.__meta = load_meta("DARK/cfg/cat-dog-obj.data".encode('utf-8')) + self.__thresh = thresh + self.__nms = nms + + def detect(self,img): + return detect_s(self.__net,self.__meta,img,thresh=self.__thresh,nms=self.__nms) + +class Yoloeye: + def __init__(self,thresh=0.3,nms=0.1): + self.__net = load_net("DARK/cfg/cat-dog-yolov3-tiny.cfg".encode("utf-8"), "weights/eye_200k.weights".encode("utf-8"), 0) + self.__meta = load_meta("DARK/cfg/cat-dog-obj.data".encode('utf-8')) + self.__thresh = thresh + self.__nms = nms + + def detect(self,img): + return detect_s(self.__net,self.__meta,img,thresh=self.__thresh,nms=self.__nms) + +class HaarCascadeExt: + def __init__(self,SF=1.03,N=6): + self.__cat_ext_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalcatface_extended.xml') + self.__SF = SF + self.__N = N + + def detect(self,img,dim): + return self.__cat_ext_cascade.detectMultiScale(img,scaleFactor=self.__SF,minNeighbors=self.__N,minSize=dim) + + + +########################################################################################################################################################################################### + +""" Useful Functions """ +def horizontalize(img,yoloeye,datagen): + + #initialization + detections= yoloeye.detect(img) + + if len(detections) !=2 : + print("The picture does not find one face, can't horizontalize") + return img + + box1, box2 = detections[0][2], detections[1][2] + x1,y1,w1,h1 = box1 + x2,y2,w2,h2 = box2 + x1 , y1 = x1-w1/2,y1-h1/2 + x2 , y2 = x2-w2/2,y2-h2/2 + + m1,m2 = (x1+x2)/2,(y1+y2)/2 + a = sqrt((y2-m2)**2+(x2-m1)**2) + b = abs(x2 - m1) + rot = degrees(acos(b/a)) + + if x2 > m1 and y2 < m2: rot = abs(rot) + elif x2 > m1 and y2 > m2: rot = -abs(rot) + elif x2 < m1 and y2 < m2: rot = -abs(rot) + elif x2 < m1 and y2 > m2: rot = abs(rot) + + dic = {'theta':rot} + batch = datagen.apply_transform(img,dic) + + return batch + + + +def convert_video_toFrame(filename): + # Model Prep + yoloface = Yoloface(thresh=0.8) + yolobody = Yolobody(thresh=0.4) + yoloeye = Yoloeye(thresh=0.5) + cascadaExt = HaarCascadeExt(SF=1.03,N=6) + + datagen = ImageDataGenerator() + number = 0 + + cap = cv2.VideoCapture(filename) #cap + + while True: + number += 1 + ret,img = cap.read() + if not ret: break + width,height = len(img[0]),len(img) + + r = yolobody.detect(img) + if len(r) == 0: continue + _,_,(x,y,w,h) = r[0] + x,y,w,h = int(x),int(y),int(w),int(h) + Xc,Yc = x-w//2,y-h//2 + W,H = w,h + if Xc < 0: Xc = 0 + if Yc < 0: Yc = 0 + next = img[Yc:Yc+h//1,Xc:Xc+w//1] + + cv2.imwrite('tmp/body/'+str(number)+'.jpg',next) + + r1 = yoloface.detect(next) + if len(r1) != 0: (R,P,(x,y,w,h)) = r1[0] + else: continue + x,y,w,h = int(x),int(y),int(w),int(h) + X1,Y1 = x-w//2,y-h//2 + if X1 < 0: X1 = 0 + if Y1 < 0: Y1 = 0 + next = next[Y1:Y1+h//1,X1:X1+w//1] + + cv2.imwrite('tmp/face/'+str(number)+'.jpg',next) + + next = horizontalize(next,yoloeye,datagen) + gray = cv2.cvtColor(next, cv2.COLOR_BGR2GRAY) + width,height = int((1/1.8)*len(next[0])),int((1/1.8)*len(next)) #We notice some sort of noise with cascade when pixel image too big (haarcascade training set not large dim) + catsExt = cascadaExt.detect(gray,(width,height)) + if len(catsExt) == 0: continue + new = sorted(catsExt,key = lambda A:A[2]*A[3]) + x,y,w,h = new[-1] + x,y = int(x),int(y) + if x < 0 : x = 0 + if y < 0: y = 0 + w,h = int(w), int(h) #trying to extend a bit more space for recognition + + cv2.imwrite('tmp/haar/'+str(number)+'.jpg',next[y:y+h,x:x+w]) + + +###################################################################################################################################################################################### + +if __name__ == "__main__": + convert_video_toFrame('video/vid6high.mp4') \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/cat_yolo_detect_recog.ipynb" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/cat_yolo_detect_recog.ipynb" new file mode 100644 index 00000000..ae70ed37 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/cat_yolo_detect_recog.ipynb" @@ -0,0 +1,271 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Yolo_Detect/Recog" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#import libs\n", + "from src import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Alright, you didn't input a model so we will start from scratch\n" + ] + } + ], + "source": [ + "im = cv2.imread(\"test_images/cat.jpg\")\n", + "yolob = Yolobody()\n", + "yoloe = Yoloeye()\n", + "yolof = Yoloface()\n", + "haar = HaarCascadeExt()\n", + "face_database = Model()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ret = yolob.detect(im)\n", + "x,y,w,h = ret[0][2]\n", + "X,Y,W,H = cent2rect(x,y,w,h)\n", + "plt.imshow(add_rect(im,(X,Y,W,H)))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ret = yoloe.detect(im)\n", + "x,y,w,h = ret[0][2]\n", + "X,Y,W,H = cent2rect(x,y,w,h)\n", + "plt.imshow(add_rect(im,(X,Y,W,H)))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ret = yolof.detect(im)\n", + "x,y,w,h = ret[0][2]\n", + "X,Y,W,H = cent2rect(x,y,w,h)\n", + "plt.imshow(add_rect(im,(X,Y,W,H)))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "croped = im[Y:Y+H,X:X+W]\n", + "nX,nY,nW,nH = haar.detect(croped,(0,0))[0]\n", + "plt.imshow(add_rect(croped,(nX,nY,nW,nH)))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "closeup = croped[nY:nY+nH,nX:nX+nW]\n", + "plt.imshow(closeup)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gathering Data to train on !\n", + "Model updated sucessefully, Congratulations\n" + ] + } + ], + "source": [ + "face_database.training([closeup],0)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 0.0)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "face_database.prediction(closeup)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/models/standard.xml" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/models/standard.xml" new file mode 100644 index 00000000..ff6e18e6 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/models/standard.xml" @@ -0,0 +1,1739 @@ + + + + 1.7976931348623157e+308 + 1 + 8 + 8 + 8 + + <_ type_id="opencv-matrix"> + 1 + 16384 +
f
+ + 5.07812500e-02 5.46875000e-02 0. 7.81250000e-03 7.81250000e-03 + 0. 3.90625000e-03 4.29687500e-02 0. 7.81250000e-03 0. 0. + 1.17187500e-02 7.81250000e-03 2.34375000e-02 6.64062500e-02 + 3.51562500e-02 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. + 1.17187500e-02 0. 0. 3.90625000e-03 0. 0. 6.64062500e-02 + 4.29687500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 7.81250000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 1.17187500e-02 3.90625000e-03 1.17187500e-02 + 1.17187500e-02 0. 1.17187500e-02 0. 0. 0. 1.95312500e-02 0. 0. + 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 1.17187500e-02 + 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. 7.81250000e-03 + 1.17187500e-02 0. 3.90625000e-03 3.90625000e-03 0. 0. + 2.34375000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.51562500e-02 + 5.85937500e-02 1.56250000e-02 1.17187500e-02 2.73437500e-02 0. + 0. 3.90625000e-03 1.17187500e-02 1.56250000e-02 0. 0. + 3.90625000e-03 3.90625000e-03 0. 7.81250000e-03 6.25000000e-02 + 7.03125000e-02 2.73437500e-02 7.81250000e-03 0. 1.95312500e-02 + 3.90625000e-03 3.90625000e-03 2.34375000e-02 3.90625000e-03 0. + 0. 0. 2.34375000e-02 0. 7.81250000e-03 7.42187500e-02 + 3.51562500e-02 7.81250000e-03 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 0. 1.56250000e-02 0. 0. 0. 2.34375000e-02 3.90625000e-03 + 3.12500000e-02 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 1.95312500e-02 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 3.12500000e-02 0. + 0. 0. 1.17187500e-02 0. 2.34375000e-02 2.73437500e-02 + 1.17187500e-02 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. + 3.90625000e-03 0. 0. 3.12500000e-02 3.90625000e-03 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 3.90625000e-02 1.56250000e-02 + 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 1.56250000e-02 1.95312500e-02 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 7.81250000e-03 2.73437500e-02 7.81250000e-02 + 6.64062500e-02 7.81250000e-03 0. 3.90625000e-03 1.56250000e-02 + 7.81250000e-03 1.17187500e-02 1.95312500e-02 1.17187500e-02 + 3.90625000e-03 0. 0. 1.95312500e-02 1.17187500e-02 + 3.90625000e-03 2.34375000e-02 1.56250000e-02 0. 0. 0. 0. 0. 0. + 0. 3.12500000e-02 3.90625000e-03 0. 0. 4.68750000e-02 + 3.90625000e-03 7.81250000e-03 1.17187500e-02 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 0. 1.56250000e-02 0. 0. 0. + 1.56250000e-02 0. 4.29687500e-02 1.95312500e-02 1.56250000e-02 + 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 7.81250000e-03 0. + 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.56250000e-02 0. 0. 0. 0. 0. + 3.90625000e-03 0. 4.29687500e-02 0. 1.17187500e-02 + 7.81250000e-03 3.51562500e-02 0. 1.95312500e-02 3.12500000e-02 + 1.17187500e-02 3.90625000e-03 0. 3.90625000e-03 7.81250000e-03 + 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 1.95312500e-02 + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 7.81250000e-03 3.90625000e-03 + 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 1.56250000e-02 + 3.90625000e-03 3.90625000e-03 7.81250000e-03 1.17187500e-02 + 3.90625000e-03 1.56250000e-02 8.98437500e-02 8.20312500e-02 0. + 0. 3.90625000e-03 7.81250000e-03 1.17187500e-02 1.17187500e-02 + 1.56250000e-02 0. 0. 0. 0. 1.56250000e-02 0. 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 0. + 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. + 1.17187500e-02 1.56250000e-02 3.51562500e-02 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 1.95312500e-02 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 6.64062500e-02 0. 0. 0. 3.90625000e-02 0. + 1.56250000e-02 3.90625000e-03 3.90625000e-03 1.56250000e-02 0. + 1.95312500e-02 3.90625000e-03 3.90625000e-03 3.90625000e-03 + 7.42187500e-02 0. 0. 0. 0. 7.81250000e-03 7.81250000e-03 0. + 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 7.81250000e-03 3.90625000e-02 0. 3.12500000e-02 0. + 1.95312500e-02 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 1.95312500e-02 0. 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 0. 0. + 0. 0. 1.17187500e-02 1.17187500e-02 1.17187500e-02 + 3.90625000e-03 3.12500000e-02 3.90625000e-03 0. 3.90625000e-03 + 8.20312500e-02 7.42187500e-02 1.95312500e-02 3.90625000e-03 + 7.81250000e-03 3.90625000e-02 0. 1.95312500e-02 2.34375000e-02 + 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 3.90625000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 3.90625000e-03 2.34375000e-02 0. + 3.90625000e-03 1.56250000e-02 2.73437500e-02 0. 3.90625000e-03 + 7.81250000e-03 7.81250000e-03 0. 3.90625000e-03 3.90625000e-03 + 0. 0. 0. 0. 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 2.73437500e-02 0. 0. 0. + 7.81250000e-03 0. 0. 2.73437500e-02 0. 3.90625000e-03 0. + 4.68750000e-02 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 2.73437500e-02 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. + 1.56250000e-02 1.56250000e-02 1.56250000e-02 0. 8.98437500e-02 + 0. 3.90625000e-03 0. 3.12500000e-02 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. + 3.90625000e-03 0. 2.73437500e-02 0. 0. 0. 1.56250000e-02 0. 0. + 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 1.56250000e-02 0. 0. 0. + 3.90625000e-03 1.56250000e-02 1.95312500e-02 0. 4.68750000e-02 + 3.90625000e-03 0. 7.81250000e-03 5.46875000e-02 4.29687500e-02 + 3.90625000e-03 0. 7.81250000e-03 3.51562500e-02 0. 0. + 2.73437500e-02 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. + 3.90625000e-03 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 1.95312500e-02 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 1.95312500e-02 0. 0. 7.81250000e-03 1.17187500e-02 0. + 1.17187500e-02 2.34375000e-02 4.68750000e-02 7.81250000e-03 0. + 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 4.29687500e-02 0. 0. 0. + 3.51562500e-02 0. 7.81250000e-03 7.81250000e-03 0. + 7.81250000e-03 0. 2.73437500e-02 0. 3.90625000e-03 0. + 7.81250000e-02 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 0. + 1.17187500e-02 0. 3.90625000e-03 0. 3.51562500e-02 + 3.90625000e-03 1.17187500e-02 0. 8.59375000e-02 3.90625000e-03 + 0. 0. 5.07812500e-02 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. + 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 1.17187500e-02 0. 0. 0. 0. + 7.81250000e-03 1.56250000e-02 0. 3.90625000e-03 0. 0. + 3.90625000e-03 7.81250000e-02 5.46875000e-02 7.81250000e-03 0. + 2.34375000e-02 3.12500000e-02 3.90625000e-03 1.95312500e-02 + 4.68750000e-02 0. 0. 0. 0. 0. 0. 1.17187500e-02 2.73437500e-02 + 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. 1.17187500e-02 + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.56250000e-02 0. 1.17187500e-02 0. 1.56250000e-02 + 3.90625000e-03 0. 3.90625000e-03 7.81250000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.17187500e-02 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 0. + 2.73437500e-02 0. 3.90625000e-03 0. 5.46875000e-02 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. + 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 7.81250000e-03 0. 2.73437500e-02 3.90625000e-03 + 4.29687500e-02 0. 7.81250000e-02 0. 0. 0. 7.03125000e-02 0. 0. + 0. 0. 0. 0. 0. 4.68750000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 1.17187500e-02 3.90625000e-03 3.90625000e-03 + 0. 1.17187500e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 0. 7.81250000e-03 3.90625000e-03 0. 0. + 7.03125000e-02 4.29687500e-02 1.56250000e-02 0. 1.56250000e-02 + 1.56250000e-02 3.90625000e-03 1.56250000e-02 6.64062500e-02 + 3.90625000e-03 0. 3.90625000e-03 0. 7.81250000e-03 + 3.90625000e-03 1.17187500e-02 8.20312500e-02 7.81250000e-03 + 7.81250000e-03 0. 0. 3.90625000e-03 0. 3.90625000e-03 + 3.90625000e-03 2.34375000e-02 0. 0. 0. 1.95312500e-02 + 3.90625000e-03 3.51562500e-02 3.12500000e-02 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 1.17187500e-02 + 1.17187500e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 2.34375000e-02 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 1.56250000e-02 0. 0. 0. 2.34375000e-02 0. 1.17187500e-02 + 1.17187500e-02 0. 7.81250000e-03 0. 7.81250000e-03 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.95312500e-02 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 0. 1.17187500e-02 0. 3.51562500e-02 0. 0. 0. + 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.95312500e-02 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 7.81250000e-03 1.95312500e-02 + 1.95312500e-02 0. 0. 0. 0. 0. 0. 1.17187500e-02 1.17187500e-02 + 3.90625000e-03 3.90625000e-03 1.17187500e-02 0. 2.73437500e-02 + 4.29687500e-02 3.90625000e-02 3.12500000e-02 0. 7.81250000e-03 + 0. 3.90625000e-03 0. 1.56250000e-02 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 1.17187500e-02 2.73437500e-02 2.34375000e-02 + 2.34375000e-02 0. 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 0. + 0. 0. 7.81250000e-03 3.90625000e-03 6.25000000e-02 + 3.90625000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 1.17187500e-02 0. 0. 0. + 3.90625000e-03 0. 1.56250000e-02 3.90625000e-03 7.81250000e-03 + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 2.73437500e-02 0. 0. + 3.90625000e-03 2.73437500e-02 0. 2.34375000e-02 0. + 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 1.56250000e-02 0. 3.90625000e-03 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 0. 1.56250000e-02 4.29687500e-02 0. + 1.56250000e-02 3.90625000e-03 3.90625000e-03 0. 7.81250000e-03 + 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 6.25000000e-02 + 4.29687500e-02 0. 0. 0. 0. 0. 3.90625000e-03 2.73437500e-02 0. + 3.90625000e-03 0. 2.34375000e-02 7.81250000e-03 1.95312500e-02 + 7.42187500e-02 5.07812500e-02 5.85937500e-02 3.90625000e-03 + 3.90625000e-03 7.81250000e-03 3.90625000e-03 7.81250000e-03 + 7.81250000e-03 3.90625000e-03 7.81250000e-03 0. 3.90625000e-03 + 0. 3.90625000e-03 3.90625000e-03 4.68750000e-02 5.85937500e-02 + 7.81250000e-03 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 1.17187500e-02 + 1.56250000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 3.90625000e-03 0. + 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 7.81250000e-03 0. 1.56250000e-02 1.17187500e-02 0. + 3.90625000e-03 0. 1.17187500e-02 0. 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 3.90625000e-03 7.81250000e-03 0. 0. + 7.81250000e-03 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 2.34375000e-02 + 2.34375000e-02 3.90625000e-03 1.17187500e-02 0. 0. 0. + 1.95312500e-02 0. 3.90625000e-03 3.90625000e-03 0. + 7.81250000e-03 3.90625000e-03 1.17187500e-02 1.95312500e-02 + 3.90625000e-02 2.73437500e-02 3.90625000e-03 3.90625000e-03 0. + 0. 3.90625000e-03 1.56250000e-02 1.17187500e-02 0. 0. + 1.17187500e-02 1.56250000e-02 0. 3.12500000e-02 8.20312500e-02 + 9.37500000e-02 1.95312500e-02 3.90625000e-03 0. 7.81250000e-03 + 3.90625000e-03 3.90625000e-03 1.17187500e-02 1.95312500e-02 0. + 0. 0. 0. 1.56250000e-02 0. 2.34375000e-02 2.34375000e-02 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 1.17187500e-02 1.56250000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 2.73437500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 3.51562500e-02 0. + 3.90625000e-03 0. 3.90625000e-03 0. 3.90625000e-03 + 1.56250000e-02 3.90625000e-03 1.56250000e-02 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 3.51562500e-02 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 7.81250000e-03 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. + 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 2.34375000e-02 3.90625000e-03 0. 1.95312500e-02 3.90625000e-03 + 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.56250000e-02 7.81250000e-03 0. + 7.81250000e-03 3.90625000e-03 0. 0. 1.17187500e-02 0. 0. 0. 0. + 3.90625000e-03 0. 0. 2.34375000e-02 2.73437500e-02 + 1.56250000e-02 3.90625000e-03 1.17187500e-02 0. 3.90625000e-03 + 7.81250000e-03 1.17187500e-02 2.73437500e-02 3.90625000e-03 0. + 1.56250000e-02 3.90625000e-03 7.81250000e-03 1.17187500e-02 + 1.13281250e-01 5.07812500e-02 0. 0. 3.90625000e-03 + 2.34375000e-02 0. 3.90625000e-03 1.56250000e-02 7.81250000e-03 + 0. 0. 0. 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 0. + 0. 0. 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 1.56250000e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.12500000e-02 0. 0. 0. 4.68750000e-02 0. 0. 1.17187500e-02 + 4.29687500e-02 0. 3.90625000e-03 0. 7.81250000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. + 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 8.20312500e-02 3.90625000e-03 7.81250000e-03 3.90625000e-03 + 5.46875000e-02 0. 1.17187500e-02 3.90625000e-03 0. + 3.90625000e-03 0. 1.95312500e-02 3.90625000e-03 0. 0. + 5.46875000e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 7.81250000e-03 0. 0. 3.90625000e-03 + 3.12500000e-02 1.17187500e-02 1.17187500e-02 0. 3.90625000e-02 + 0. 0. 0. 3.90625000e-02 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 1.17187500e-02 0. 3.90625000e-03 3.90625000e-03 + 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 1.17187500e-02 0. 2.34375000e-02 3.90625000e-03 0. 0. 0. + 1.17187500e-02 2.73437500e-02 0. 3.12500000e-02 3.90625000e-03 + 1.56250000e-02 3.90625000e-03 4.29687500e-02 4.29687500e-02 + 3.90625000e-03 3.90625000e-03 3.90625000e-03 3.12500000e-02 0. + 2.34375000e-02 2.34375000e-02 0. 0. 0. 3.90625000e-03 + 1.56250000e-02 0. 1.17187500e-02 1.56250000e-02 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 4.29687500e-02 0. + 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 0. 0. 3.12500000e-02 0. 4.29687500e-02 + 2.73437500e-02 2.34375000e-02 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 3.90625000e-03 0. 0. + 0. 1.56250000e-02 0. 0. 0. 1.17187500e-02 0. 1.17187500e-02 + 3.90625000e-03 0. 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. + 4.29687500e-02 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.12500000e-02 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 1.95312500e-02 7.81250000e-03 + 7.81250000e-03 0. 1.01562500e-01 0. 0. 0. 2.34375000e-02 0. 0. + 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 7.81250000e-03 + 7.81250000e-03 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 7.81250000e-03 7.81250000e-03 0. 1.17187500e-02 0. 0. 0. + 7.81250000e-03 1.17187500e-02 7.81250000e-03 0. 3.12500000e-02 + 0. 7.81250000e-03 3.90625000e-03 6.25000000e-02 5.46875000e-02 + 7.81250000e-03 0. 3.90625000e-03 1.17187500e-02 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 0. 3.90625000e-03 + 1.95312500e-02 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. + 0. 0. 1.17187500e-02 3.90625000e-03 0. 0. 2.73437500e-02 0. + 1.56250000e-02 3.90625000e-03 3.90625000e-02 3.90625000e-03 0. + 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. + 1.17187500e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 1.56250000e-02 0. 3.90625000e-02 0. 3.90625000e-03 + 3.90625000e-03 3.12500000e-02 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. + 2.34375000e-02 3.12500000e-02 2.34375000e-02 3.90625000e-03 + 1.60156250e-01 0. 3.90625000e-03 0. 5.46875000e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 2.73437500e-02 0. 0. 0. 7.81250000e-03 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 0. 1.17187500e-02 + 7.81250000e-03 7.81250000e-03 0. 3.90625000e-03 0. 0. + 3.90625000e-03 3.90625000e-03 0. 2.34375000e-02 0. + 1.95312500e-02 3.90625000e-03 1.56250000e-02 0. 5.46875000e-02 + 5.85937500e-02 3.90625000e-02 7.81250000e-03 1.17187500e-02 + 1.95312500e-02 3.90625000e-03 1.17187500e-02 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. + 7.81250000e-03 1.95312500e-02 1.17187500e-02 0. 0. + 7.81250000e-03 0. 7.81250000e-03 0. 7.81250000e-03 + 3.90625000e-03 0. 0. 1.95312500e-02 0. 1.95312500e-02 + 1.95312500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 2.73437500e-02 0. 2.34375000e-02 + 1.56250000e-02 1.17187500e-02 7.81250000e-03 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 1.17187500e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. 7.81250000e-03 + 3.90625000e-03 0. 3.90625000e-03 0. 7.81250000e-03 0. 0. + 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 2.34375000e-02 0. 1.17187500e-02 0. 1.95312500e-02 0. 0. + 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. + 1.95312500e-02 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 + 7.81250000e-03 1.17187500e-02 4.68750000e-02 0. 1.95312500e-02 + 0. 0. 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 7.81250000e-03 + 0. 0. 1.56250000e-02 3.90625000e-03 2.34375000e-02 0. + 7.81250000e-03 0. 0. 7.81250000e-03 7.81250000e-03 + 7.81250000e-03 1.56250000e-02 0. 3.90625000e-03 1.95312500e-02 + 1.56250000e-02 1.17187500e-02 8.98437500e-02 3.90625000e-02 + 5.07812500e-02 0. 1.56250000e-02 7.81250000e-03 7.81250000e-03 + 0. 2.73437500e-02 0. 0. 0. 0. 0. 0. 2.34375000e-02 + 4.29687500e-02 2.34375000e-02 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 0. 0. + 4.29687500e-02 3.51562500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.17187500e-02 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 1.17187500e-02 3.90625000e-03 + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 0. 0. + 1.17187500e-02 3.90625000e-03 7.81250000e-03 0. 0. + 1.56250000e-02 0. 7.81250000e-03 0. 0. 0. 1.56250000e-02 0. 0. + 0. 0. 0. 0. 0. 3.12500000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 7.81250000e-03 0. 1.17187500e-02 0. 0. + 3.90625000e-03 2.73437500e-02 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 3.12500000e-02 3.90625000e-03 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 3.90625000e-03 3.90625000e-03 0. 1.95312500e-02 + 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.95312500e-02 1.17187500e-02 1.56250000e-02 0. 7.81250000e-03 + 0. 0. 0. 3.90625000e-03 1.95312500e-02 3.90625000e-03 + 3.90625000e-03 7.81250000e-03 2.34375000e-02 0. 2.34375000e-02 + 7.42187500e-02 5.07812500e-02 2.34375000e-02 3.90625000e-03 + 7.81250000e-03 7.81250000e-03 0. 3.90625000e-03 1.56250000e-02 + 1.17187500e-02 7.81250000e-03 0. 0. 7.81250000e-03 0. + 7.81250000e-03 5.85937500e-02 2.34375000e-02 3.90625000e-03 0. + 0. 0. 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 3.90625000e-03 + 1.95312500e-02 0. 1.56250000e-02 1.95312500e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. + 7.81250000e-03 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.56250000e-02 0. 0. 7.81250000e-03 0. 0. 7.81250000e-03 0. + 1.95312500e-02 3.90625000e-03 0. 0. 2.34375000e-02 0. + 1.17187500e-02 1.17187500e-02 3.90625000e-03 1.56250000e-02 0. + 3.90625000e-02 0. 0. 0. 3.90625000e-02 0. 0. 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 1.56250000e-02 0. + 3.90625000e-02 0. 0. 0. 3.90625000e-02 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 7.81250000e-03 3.90625000e-03 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 2.34375000e-02 0. 1.56250000e-02 3.90625000e-03 3.90625000e-03 + 0. 3.12500000e-02 0. 0. 0. 0. 3.90625000e-03 0. 0. + 3.51562500e-02 7.81250000e-03 1.95312500e-02 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 7.81250000e-03 1.95312500e-02 0. 0. 0. + 7.81250000e-03 3.90625000e-03 2.34375000e-02 6.25000000e-02 + 6.25000000e-02 2.34375000e-02 7.81250000e-03 1.56250000e-02 + 1.17187500e-02 0. 0. 1.17187500e-02 0. 0. 0. 0. 1.17187500e-02 + 0. 1.95312500e-02 2.34375000e-02 1.95312500e-02 1.56250000e-02 + 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 3.51562500e-02 0. + 7.81250000e-02 4.29687500e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 1.56250000e-02 3.90625000e-03 3.90625000e-03 + 0. 1.17187500e-02 0. 2.73437500e-02 7.81250000e-03 + 7.81250000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.56250000e-02 0. 0. 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 0. 1.17187500e-02 0. 7.81250000e-03 7.81250000e-03 + 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.95312500e-02 3.90625000e-03 + 2.34375000e-02 0. 2.73437500e-02 0. 0. 0. 1.56250000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 7.81250000e-03 0. 3.90625000e-03 3.90625000e-03 1.56250000e-02 + 2.73437500e-02 0. 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 1.56250000e-02 3.90625000e-03 + 2.34375000e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. + 1.17187500e-02 7.81250000e-03 0. 3.90625000e-03 1.17187500e-02 + 0. 3.51562500e-02 8.98437500e-02 4.29687500e-02 1.56250000e-02 + 0. 3.90625000e-03 0. 0. 0. 1.56250000e-02 3.90625000e-03 0. 0. + 0. 1.17187500e-02 0. 3.12500000e-02 1.44531250e-01 + 2.34375000e-02 1.17187500e-02 0. 0. 3.90625000e-03 0. 0. 0. + 1.56250000e-02 0. 0. 0. 7.81250000e-03 3.90625000e-03 + 1.56250000e-02 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 + 3.12500000e-02 0. 3.90625000e-03 1.95312500e-02 2.34375000e-02 + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 1.17187500e-02 0. 3.90625000e-03 0. 0. 0. + 0. 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. 7.81250000e-03 + 7.81250000e-03 0. 1.56250000e-02 0. 7.81250000e-03 + 3.90625000e-03 0. 3.90625000e-03 1.01562500e-01 0. 0. 0. 0. 0. + 0. 0. 3.51562500e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 1.17187500e-02 0. 7.81250000e-03 0. 1.17187500e-02 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 1.17187500e-02 1.17187500e-02 0. 3.90625000e-03 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.12500000e-02 + 3.12500000e-02 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. 3.90625000e-03 + 3.90625000e-03 0. 7.81250000e-03 7.03125000e-02 5.07812500e-02 + 7.81250000e-03 3.90625000e-03 3.90625000e-03 3.90625000e-02 0. + 1.17187500e-02 1.56250000e-02 0. 0. 0. 0. 7.81250000e-03 0. + 7.81250000e-03 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 3.90625000e-03 0. 3.90625000e-02 0. + 2.73437500e-02 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. 0. 0. 5.46875000e-02 + 7.81250000e-03 7.81250000e-03 1.17187500e-02 5.07812500e-02 0. + 0. 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. 0. 0. 5.07812500e-02 + 0. 3.90625000e-03 3.90625000e-03 2.73437500e-02 0. + 7.81250000e-03 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 4.68750000e-02 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 4.68750000e-02 + 1.95312500e-02 1.17187500e-02 0. 1.56250000e-02 0. 0. + 3.90625000e-03 3.12500000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 1.17187500e-02 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 0. 1.17187500e-02 + 0. 3.90625000e-03 0. 2.34375000e-02 0. 0. 0. 0. 1.95312500e-02 + 2.34375000e-02 0. 2.73437500e-02 0. 3.90625000e-03 0. + 7.03125000e-02 4.29687500e-02 1.56250000e-02 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. + 1.17187500e-02 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 7.81250000e-03 0. + 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 + 7.81250000e-03 3.12500000e-02 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 4.29687500e-02 0. 0. 0. 0. 0. 0. 0. 3.51562500e-02 0. 0. + 0. 1.17187500e-02 0. 3.90625000e-03 0. 3.90625000e-03 + 1.17187500e-02 0. 3.90625000e-02 0. 0. 0. 3.12500000e-02 0. 0. + 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 + 3.51562500e-02 4.29687500e-02 0. 8.98437500e-02 0. 0. + 3.90625000e-03 6.64062500e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 7.81250000e-03 7.81250000e-03 0. + 2.73437500e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 1.95312500e-02 1.17187500e-02 0. 4.29687500e-02 + 0. 0. 0. 7.81250000e-03 3.12500000e-02 1.56250000e-02 + 3.90625000e-03 5.07812500e-02 0. 3.90625000e-03 0. + 5.07812500e-02 3.51562500e-02 7.81250000e-03 0. 1.95312500e-02 + 2.73437500e-02 0. 1.95312500e-02 1.95312500e-02 7.81250000e-03 + 0. 0. 0. 3.90625000e-03 3.90625000e-03 7.81250000e-03 + 2.34375000e-02 7.81250000e-03 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. + 2.73437500e-02 0. 9.37500000e-02 4.29687500e-02 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. + 0. 0. 2.34375000e-02 3.90625000e-03 0. 0. 6.64062500e-02 0. + 1.95312500e-02 1.17187500e-02 1.17187500e-02 3.90625000e-03 0. + 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 1.56250000e-02 0. 0. 0. 2.73437500e-02 0. 1.56250000e-02 + 0. 0. 7.81250000e-03 0. 1.17187500e-02 0. 0. 0. 1.95312500e-02 + 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.12500000e-02 0. 5.46875000e-02 3.90625000e-03 0. 0. + 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 2.34375000e-02 0. 1.56250000e-02 0. 0. 0. + 2.34375000e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 + 7.81250000e-03 7.81250000e-03 0. 1.17187500e-02 0. 0. 0. + 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 7.81250000e-03 3.12500000e-02 + 5.07812500e-02 3.51562500e-02 3.90625000e-03 3.90625000e-03 0. + 0. 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 1.17187500e-02 1.40625000e-01 2.73437500e-02 + 1.56250000e-02 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 1.95312500e-02 0. 0. 0. 2.34375000e-02 0. + 2.73437500e-02 3.51562500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.56250000e-02 0. 7.81250000e-03 + 1.17187500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 7.81250000e-03 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 7.81250000e-03 0. + 1.95312500e-02 3.90625000e-03 0. 7.81250000e-03 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 0. 3.90625000e-03 0. + 2.73437500e-02 3.90625000e-03 0. 3.90625000e-03 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 7.81250000e-03 2.73437500e-02 5.07812500e-02 0. + 1.95312500e-02 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 5.46875000e-02 1.95312500e-02 + 1.56250000e-02 0. 7.81250000e-03 3.90625000e-03 0. 0. + 7.81250000e-03 7.81250000e-03 1.17187500e-02 0. 7.81250000e-03 + 7.81250000e-03 3.90625000e-03 2.34375000e-02 5.07812500e-02 + 5.85937500e-02 3.51562500e-02 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 1.56250000e-02 0. 0. 0. + 3.90625000e-03 7.81250000e-03 0. 0. 3.90625000e-03 + 4.29687500e-02 1.56250000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 1.17187500e-02 0. 1.95312500e-02 + 1.95312500e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 1.56250000e-02 7.81250000e-03 0. 0. 3.90625000e-03 + 0. 0. 0. 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 1.17187500e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. + 7.81250000e-03 7.81250000e-03 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 2.34375000e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 0. 0. 0. 1.17187500e-02 0. 7.81250000e-03 7.81250000e-03 0. + 1.17187500e-02 0. 7.81250000e-03 0. 7.81250000e-03 0. + 1.56250000e-02 0. 0. 0. 0. 3.90625000e-03 0. 0. 7.81250000e-03 + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 + 2.34375000e-02 0. 3.90625000e-03 3.90625000e-03 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 7.81250000e-03 1.17187500e-02 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 2.34375000e-02 2.73437500e-02 0. 2.34375000e-02 + 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 3.90625000e-03 3.90625000e-02 + 2.73437500e-02 3.12500000e-02 0. 7.81250000e-03 0. 0. 0. + 7.81250000e-03 7.81250000e-03 1.56250000e-02 0. 0. + 1.56250000e-02 3.90625000e-03 5.07812500e-02 8.20312500e-02 + 4.68750000e-02 4.68750000e-02 0. 7.81250000e-03 3.90625000e-03 + 7.81250000e-03 7.81250000e-03 1.95312500e-02 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 0. 3.90625000e-03 2.34375000e-02 + 3.90625000e-02 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 1.95312500e-02 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.17187500e-02 + 7.81250000e-03 7.81250000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. + 1.56250000e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.56250000e-02 + 0. 0. 3.90625000e-03 1.17187500e-02 0. 1.95312500e-02 + 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. 0. 0. 1.56250000e-02 + 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 1.17187500e-02 2.34375000e-02 3.90625000e-03 0. + 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 3.90625000e-03 0. 0. + 1.95312500e-02 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 2.73437500e-02 7.42187500e-02 0. + 1.17187500e-02 0. 0. 0. 2.73437500e-02 0. 0. 0. 0. 0. + 7.81250000e-03 1.17187500e-02 1.95312500e-02 6.25000000e-02 + 4.29687500e-02 0. 1.17187500e-02 0. 0. 0. 0. 2.73437500e-02 + 7.81250000e-03 0. 3.90625000e-03 7.81250000e-03 7.81250000e-03 + 2.34375000e-02 6.25000000e-02 8.20312500e-02 0. 3.90625000e-03 + 7.81250000e-03 7.81250000e-03 7.81250000e-03 0. 1.56250000e-02 + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 7.81250000e-03 + 5.46875000e-02 1.56250000e-02 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 1.56250000e-02 0. 0. 0. 7.81250000e-03 + 3.90625000e-03 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. + 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. + 2.73437500e-02 3.90625000e-03 0. 1.17187500e-02 1.95312500e-02 + 0. 0. 0. 3.90625000e-03 3.90625000e-03 7.81250000e-03 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. + 0. 0. 3.90625000e-03 3.51562500e-02 0. 0. 0. 0. 0. 0. 0. + 8.59375000e-02 3.90625000e-03 0. 0. 3.51562500e-02 0. + 3.90625000e-03 1.56250000e-02 0. 7.81250000e-03 0. + 7.81250000e-03 0. 0. 0. 3.12500000e-02 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 1.56250000e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 7.81250000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 + 1.17187500e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 1.17187500e-02 4.68750000e-02 3.90625000e-03 7.81250000e-03 + 0. 0. 0. 0. 3.90625000e-03 4.29687500e-02 3.90625000e-03 + 1.56250000e-02 1.17187500e-02 0. 1.56250000e-02 1.17187500e-02 + 6.64062500e-02 2.34375000e-02 7.81250000e-03 0. 1.17187500e-02 + 3.90625000e-03 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. + 0. 0. 0. 3.90625000e-03 0. 1.17187500e-02 1.56250000e-02 + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 4.29687500e-02 0. 4.29687500e-02 7.81250000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. + 3.51562500e-02 0. 1.56250000e-02 7.81250000e-03 3.90625000e-03 + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 3.90625000e-03 0. 7.81250000e-03 0. + 1.17187500e-02 0. 3.90625000e-03 0. 0. 1.17187500e-02 0. 0. 0. + 8.20312500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 7.81250000e-03 0. 0. 7.81250000e-03 + 7.81250000e-03 2.34375000e-02 7.81250000e-03 2.34375000e-02 0. + 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.95312500e-02 1.05468750e-01 0. 3.12500000e-02 0. 0. 0. + 7.81250000e-03 0. 7.81250000e-03 0. 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 3.51562500e-02 4.29687500e-02 0. 1.56250000e-02 + 3.90625000e-03 0. 0. 0. 1.17187500e-02 1.95312500e-02 0. + 3.90625000e-03 1.95312500e-02 0. 2.34375000e-02 6.25000000e-02 + 4.29687500e-02 1.17187500e-02 0. 1.56250000e-02 2.34375000e-02 + 7.81250000e-03 0. 2.73437500e-02 3.90625000e-03 0. 0. 0. + 1.56250000e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 3.90625000e-03 0. 0. 1.95312500e-02 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.12500000e-02 0. 0. 0. + 3.12500000e-02 0. 7.81250000e-03 7.81250000e-03 1.56250000e-02 + 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. + 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 2.73437500e-02 + 7.81250000e-03 0. 0. 2.73437500e-02 0. 1.17187500e-02 + 7.81250000e-03 7.81250000e-03 3.90625000e-03 0. 3.90625000e-02 + 0. 0. 0. 1.48437500e-01 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.17187500e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 5.07812500e-02 3.90625000e-03 0. + 0. 5.85937500e-02 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. + 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-03 7.81250000e-03 + 1.56250000e-02 0. 7.81250000e-03 0. 1.17187500e-02 + 1.56250000e-02 7.42187500e-02 5.07812500e-02 7.81250000e-03 + 3.90625000e-03 3.90625000e-03 2.73437500e-02 0. 7.81250000e-03 + 1.56250000e-02 0. 0. 0. 0. 1.95312500e-02 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. + 3.90625000e-03 0. 0. 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. + 3.51562500e-02 0. 7.81250000e-03 7.81250000e-03 2.73437500e-02 + 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 + 0. 0. 3.90625000e-03 1.17187500e-02 0. 7.81250000e-03 + 3.90625000e-03 0. 2.34375000e-02 0. 1.56250000e-02 0. + 3.90625000e-03 0. 3.90625000e-02 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 7.81250000e-03 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 1.17187500e-02 1.56250000e-02 3.51562500e-02 + 0. 6.64062500e-02 3.90625000e-03 0. 0. 6.25000000e-02 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 7.81250000e-03 + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.56250000e-02 0. 3.90625000e-02 3.90625000e-03 0. + 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. 3.90625000e-03 0. 0. + 2.73437500e-02 3.90625000e-03 1.95312500e-02 0. 2.73437500e-02 + 0. 0. 0. 3.90625000e-03 1.17187500e-02 1.17187500e-02 + 3.90625000e-03 3.51562500e-02 1.17187500e-02 3.90625000e-03 + 1.17187500e-02 5.07812500e-02 2.73437500e-02 7.81250000e-03 0. + 0. 1.17187500e-02 0. 0. 3.90625000e-02 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 7.81250000e-03 0. 0. 0. 3.51562500e-02 0. + 1.17187500e-02 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 0. 0. 0. + 0. 0. 0. 0. 2.73437500e-02 0. 0. 0. 2.07031250e-01 0. + 2.34375000e-02 1.56250000e-02 1.17187500e-02 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.51562500e-02 0. 0. 0. + 3.90625000e-03 0. 0. 3.90625000e-03 5.46875000e-02 + 3.90625000e-03 0. 0. 5.07812500e-02 0. 7.81250000e-03 0. 0. + 3.90625000e-03 0. 1.56250000e-02 0. 0. 0. 5.07812500e-02 0. 0. + 0. 0. 0. 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 2.34375000e-02 + 3.90625000e-03 3.90625000e-03 0. 3.12500000e-02 0. 0. 0. + 1.95312500e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 3.90625000e-03 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 4.68750000e-02 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 3.90625000e-02 3.12500000e-02 0. + 7.81250000e-03 1.17187500e-02 7.81250000e-03 0. 7.81250000e-03 + 3.51562500e-02 0. 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 + 1.56250000e-02 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 3.90625000e-03 1.95312500e-02 0. + 3.51562500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. + 0. 0. 0. 0. 7.81250000e-03 7.81250000e-03 3.90625000e-03 + 3.90625000e-03 3.51562500e-02 0. 0. 1.17187500e-02 + 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 7.81250000e-03 0. + 0. 1.95312500e-02 0. 2.73437500e-02 0. 0. 0. 5.46875000e-02 0. + 0. 0. 0. 0. 0. 0. 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 1.56250000e-02 7.81250000e-03 2.73437500e-02 0. + 1.32812500e-01 3.90625000e-03 0. 0. 3.90625000e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 2.34375000e-02 0. + 1.17187500e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 7.81250000e-03 5.07812500e-02 1.95312500e-02 + 3.90625000e-03 1.56250000e-02 0. 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 0. + 3.90625000e-03 5.85937500e-02 5.85937500e-02 1.95312500e-02 + 7.81250000e-03 3.90625000e-03 1.17187500e-02 0. 3.90625000e-03 + 2.34375000e-02 0. 3.90625000e-03 0. 0. 2.34375000e-02 0. + 7.81250000e-03 4.29687500e-02 3.51562500e-02 1.17187500e-02 0. + 0. 3.90625000e-03 0. 3.90625000e-03 0. 1.95312500e-02 + 3.90625000e-03 3.90625000e-03 0. 2.34375000e-02 0. + 2.34375000e-02 1.17187500e-02 0. 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 3.90625000e-03 0. 1.56250000e-02 + 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 7.81250000e-03 0. 0. 0. 2.73437500e-02 7.81250000e-03 0. + 0. 3.90625000e-03 0. 0. 0. 2.34375000e-02 0. 0. 0. + 1.56250000e-02 0. 1.56250000e-02 3.90625000e-03 0. + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 7.81250000e-03 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 7.81250000e-03 3.90625000e-03 + 1.95312500e-02 0. 1.17187500e-02 0. 0. 0. 1.95312500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 2.34375000e-02 + 1.56250000e-02 0. 7.81250000e-03 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 + 3.12500000e-02 1.95312500e-02 0. 3.90625000e-03 7.81250000e-03 + 0. 3.90625000e-03 0. 2.73437500e-02 7.81250000e-03 0. + 3.90625000e-03 1.56250000e-02 7.81250000e-03 1.95312500e-02 + 6.64062500e-02 5.46875000e-02 5.07812500e-02 3.90625000e-03 + 1.56250000e-02 3.90625000e-03 0. 3.90625000e-03 3.12500000e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 1.17187500e-02 6.25000000e-02 + 4.29687500e-02 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 7.81250000e-03 0. 0. 0. 7.81250000e-03 + 3.90625000e-03 6.64062500e-02 5.46875000e-02 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.56250000e-02 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. + 1.56250000e-02 7.81250000e-03 3.90625000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.12500000e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 7.81250000e-03 0. + 1.17187500e-02 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. + 0. 3.12500000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 1.17187500e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. + 3.90625000e-03 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 1.95312500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 1.56250000e-02 + 1.17187500e-02 0. 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 3.90625000e-03 3.90625000e-03 3.12500000e-02 + 1.17187500e-02 2.34375000e-02 0. 3.90625000e-03 0. 0. 0. 0. + 7.81250000e-03 7.81250000e-03 3.90625000e-03 0. 1.56250000e-02 + 3.90625000e-03 4.68750000e-02 6.64062500e-02 4.68750000e-02 + 2.73437500e-02 0. 2.73437500e-02 3.90625000e-03 0. + 3.90625000e-03 1.56250000e-02 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 2.73437500e-02 5.85937500e-02 7.81250000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.17187500e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.51562500e-02 + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 1.17187500e-02 0. + 0. 0. 7.81250000e-03 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 7.81250000e-03 0. + 3.90625000e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.56250000e-02 + 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 + 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 7.81250000e-03 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 3.90625000e-03 3.90625000e-02 7.81250000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 0. 3.90625000e-03 3.90625000e-03 + 7.81250000e-03 1.95312500e-02 9.76562500e-02 4.68750000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 3.51562500e-02 2.34375000e-02 0. + 7.81250000e-03 3.12500000e-02 1.17187500e-02 3.90625000e-02 + 6.25000000e-02 8.20312500e-02 1.95312500e-02 7.81250000e-03 0. + 0. 0. 1.17187500e-02 7.81250000e-03 0. 0. 0. 0. 1.17187500e-02 + 3.90625000e-03 7.81250000e-03 2.34375000e-02 2.73437500e-02 + 3.90625000e-03 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. + 1.17187500e-02 0. 0. 0. 1.95312500e-02 0. 1.95312500e-02 + 3.12500000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 7.81250000e-03 3.90625000e-03 0. 0. + 3.90625000e-03 0. 0. 0. 2.34375000e-02 0. 0. 0. 1.17187500e-02 + 0. 1.56250000e-02 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 2.34375000e-02 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 3.51562500e-02 0. 0. 0. 1.56250000e-02 3.90625000e-03 + 1.56250000e-02 7.81250000e-03 3.90625000e-03 3.90625000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.95312500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 + 3.90625000e-03 7.81250000e-03 0. 7.81250000e-03 3.90625000e-03 + 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 7.81250000e-03 7.81250000e-03 3.51562500e-02 + 3.90625000e-02 0. 1.56250000e-02 0. 0. 0. 1.17187500e-02 0. 0. + 0. 3.90625000e-03 0. 0. 0. 4.68750000e-02 3.12500000e-02 + 5.07812500e-02 0. 7.81250000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. + 3.12500000e-02 6.25000000e-02 4.68750000e-02 2.34375000e-02 + 7.81250000e-03 3.12500000e-02 7.81250000e-03 0. 1.17187500e-02 + 4.29687500e-02 3.90625000e-03 3.90625000e-03 0. 0. + 7.81250000e-03 0. 1.17187500e-02 1.17187500e-02 1.56250000e-02 + 3.90625000e-03 0. 0. 7.81250000e-03 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 1.17187500e-02 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 + 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 2.34375000e-02 3.90625000e-03 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 3.51562500e-02 0. 0. 0. 3.90625000e-02 0. 0. + 0. 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 1.17187500e-02 0. 0. 0. 2.34375000e-02 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 7.81250000e-03 1.56250000e-02 1.17187500e-02 3.90625000e-03 + 7.81250000e-02 0. 3.90625000e-03 0. 4.29687500e-02 0. 0. 0. 0. + 0. 3.90625000e-03 0. 3.51562500e-02 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 1.56250000e-02 + 3.90625000e-03 3.90625000e-03 0. 1.56250000e-02 0. + 3.90625000e-03 0. 3.12500000e-02 0. 0. 0. 0. 0. 0. + 3.90625000e-03 5.46875000e-02 1.56250000e-02 1.95312500e-02 0. + 1.56250000e-02 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 + 7.81250000e-03 3.90625000e-03 0. 0. 6.64062500e-02 + 2.73437500e-02 7.81250000e-03 3.90625000e-03 0. 1.56250000e-02 + 0. 1.56250000e-02 1.56250000e-02 3.90625000e-03 0. 0. 0. + 1.17187500e-02 0. 7.81250000e-03 7.81250000e-03 1.56250000e-02 + 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 3.12500000e-02 0. 1.17187500e-02 + 3.12500000e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. + 2.73437500e-02 0. 0. 0. 1.05468750e-01 0. 1.95312500e-02 + 7.81250000e-03 2.73437500e-02 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-02 0. 0. 3.90625000e-03 5.46875000e-02 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 7.81250000e-03 0. + 7.81250000e-03 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.56250000e-02 + 7.81250000e-03 1.95312500e-02 0. 1.17187500e-02 0. 0. 0. + 1.95312500e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. + 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.56250000e-02 + 2.34375000e-02 1.95312500e-02 0. 7.81250000e-03 3.90625000e-03 + 0. 0. 7.81250000e-03 1.17187500e-02 1.95312500e-02 0. + 1.17187500e-02 1.95312500e-02 0. 7.81250000e-03 5.07812500e-02 + 4.68750000e-02 1.56250000e-02 3.90625000e-03 1.17187500e-02 + 3.90625000e-03 0. 0. 2.73437500e-02 0. 0. 0. 0. 7.81250000e-03 + 3.90625000e-03 7.81250000e-03 2.73437500e-02 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 1.95312500e-02 + 1.17187500e-02 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 1.17187500e-02 0. 7.81250000e-03 + 1.17187500e-02 1.56250000e-02 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 1.17187500e-02 0. 1.56250000e-02 + 3.90625000e-03 3.90625000e-03 0. 0. 2.73437500e-02 0. 0. 0. + 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 3.90625000e-03 2.73437500e-02 0. 1.56250000e-02 + 0. 3.90625000e-03 0. 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 4.29687500e-02 3.51562500e-02 3.90625000e-03 + 1.56250000e-02 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. + 0. 0. 3.90625000e-03 2.34375000e-02 1.13281250e-01 + 5.46875000e-02 7.81250000e-03 3.90625000e-03 0. 0. + 3.90625000e-03 0. 1.56250000e-02 1.56250000e-02 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 3.90625000e-03 1.17187500e-02 + 5.07812500e-02 4.29687500e-02 3.90625000e-02 0. 3.90625000e-03 + 1.17187500e-02 0. 3.90625000e-03 3.90625000e-03 0. + 3.90625000e-03 0. 0. 7.81250000e-03 3.90625000e-03 + 2.73437500e-02 2.73437500e-02 7.81250000e-03 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 7.81250000e-03 + 7.81250000e-03 0. 3.90625000e-03 0. 1.95312500e-02 0. + 4.68750000e-02 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 2.73437500e-02 3.90625000e-03 + 7.81250000e-03 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 3.90625000e-03 0. 1.17187500e-02 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 7.81250000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 1.17187500e-02 4.68750000e-02 0. 1.95312500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 1.95312500e-02 1.21093750e-01 + 3.90625000e-03 4.68750000e-02 0. 0. 0. 1.95312500e-02 0. 0. 0. + 3.90625000e-03 0. 0. 3.90625000e-03 3.12500000e-02 + 2.73437500e-02 5.07812500e-02 0. 7.81250000e-03 0. 0. + 3.90625000e-03 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. + 0. 0. 3.90625000e-03 2.34375000e-02 6.64062500e-02 + 5.85937500e-02 6.64062500e-02 0. 1.95312500e-02 3.90625000e-03 + 0. 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 1.17187500e-02 0. + 2.34375000e-02 3.90625000e-02 5.46875000e-02 1.17187500e-02 0. + 0. 0. 0. 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-02 3.51562500e-02 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 1.17187500e-02 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 1.17187500e-02 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 3.90625000e-03 1.17187500e-02 + 3.12500000e-02 3.90625000e-03 1.17187500e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 2.73437500e-02 + 0. 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.56250000e-02 2.34375000e-02 0. + 3.12500000e-02 7.81250000e-03 0. 3.90625000e-03 2.73437500e-02 + 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 + 6.64062500e-02 1.95312500e-02 3.90625000e-03 3.90625000e-03 + 1.17187500e-02 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. + 3.90625000e-03 7.81250000e-03 2.73437500e-02 8.59375000e-02 + 5.85937500e-02 3.12500000e-02 0. 7.81250000e-03 3.90625000e-03 + 0. 1.56250000e-02 2.34375000e-02 0. 0. 0. 0. 3.90625000e-03 0. + 1.95312500e-02 3.12500000e-02 1.95312500e-02 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 7.81250000e-03 1.95312500e-02 + 0. 1.32812500e-01 4.29687500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 7.81250000e-03 + 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 1.17187500e-02 0. + 1.56250000e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 1.17187500e-02 + 1.95312500e-02 4.29687500e-02 0. 1.95312500e-02 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. + 3.90625000e-02 1.56250000e-02 2.34375000e-02 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 0. + 3.12500000e-02 1.05468750e-01 6.25000000e-02 5.07812500e-02 + 3.90625000e-03 2.73437500e-02 0. 3.90625000e-03 7.81250000e-03 + 5.07812500e-02 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 2.34375000e-02 4.68750000e-02 3.51562500e-02 + 0. 3.90625000e-03 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 0. 2.73437500e-02 + 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 7.81250000e-03 1.95312500e-02 0. + 1.17187500e-02 0. 0. 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. + 0. 0. 3.90625000e-03 1.95312500e-02 7.81250000e-03 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 7.81250000e-03 1.56250000e-02 3.90625000e-03 0. + 0. 2.73437500e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. + 4.29687500e-02 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 3.90625000e-03 5.07812500e-02 0. 1.56250000e-02 + 0. 0. 0. 2.34375000e-02 0. 0. 0. 3.90625000e-03 0. 0. + 1.17187500e-02 3.90625000e-02 1.17187500e-02 7.81250000e-03 0. + 0. 0. 0. 3.90625000e-03 1.56250000e-02 3.90625000e-03 0. 0. 0. + 0. 0. 2.34375000e-02 9.37500000e-02 7.42187500e-02 + 1.95312500e-02 0. 1.95312500e-02 1.17187500e-02 3.90625000e-03 + 0. 1.56250000e-02 3.90625000e-03 0. 0. 0. 1.17187500e-02 + 7.81250000e-03 7.81250000e-03 1.56250000e-02 3.51562500e-02 + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 0. 0. 7.81250000e-03 0. 7.81250000e-03 + 7.81250000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.17187500e-02 0. 0. + 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 7.81250000e-03 1.95312500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 4.68750000e-02 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 1.95312500e-02 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. + 0. 1.95312500e-02 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 7.81250000e-03 1.95312500e-02 + 1.56250000e-02 0. 0. 0. 3.90625000e-03 0. 1.95312500e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 7.81250000e-03 + 5.07812500e-02 3.90625000e-03 1.56250000e-02 0. 0. 0. + 2.34375000e-02 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. + 2.34375000e-02 8.20312500e-02 3.51562500e-02 0. 7.81250000e-03 + 3.90625000e-03 0. 0. 0. 1.95312500e-02 3.90625000e-03 0. 0. + 1.17187500e-02 3.90625000e-03 4.29687500e-02 5.85937500e-02 + 2.34375000e-02 7.81250000e-03 0. 1.17187500e-02 3.90625000e-03 + 0. 3.90625000e-03 3.90625000e-02 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 7.81250000e-03 8.98437500e-02 1.56250000e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 7.81250000e-03 7.81250000e-03 + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. + 0. 0. 7.81250000e-03 0. 1.17187500e-02 1.17187500e-02 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 5.46875000e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. + 1.13281250e-01 0. 0. 0. 3.51562500e-02 0. 3.90625000e-03 + 7.81250000e-03 7.81250000e-03 7.81250000e-03 0. 2.73437500e-02 + 0. 0. 0. 3.90625000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 1.17187500e-02 7.81250000e-03 1.95312500e-02 0. + 2.34375000e-02 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 1.17187500e-02 0. 0. 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 4.29687500e-02 1.56250000e-02 3.90625000e-03 0. + 0. 0. 0. 1.17187500e-02 5.07812500e-02 0. 0. 1.17187500e-02 + 7.81250000e-03 0. 3.90625000e-03 4.29687500e-02 3.51562500e-02 + 1.17187500e-02 3.90625000e-03 3.90625000e-03 0. 0. + 1.56250000e-02 1.95312500e-02 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 1.95312500e-02 1.17187500e-02 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.12500000e-02 0. + 7.42187500e-02 2.34375000e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.90625000e-02 + 0. 2.73437500e-02 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.51562500e-02 0. 3.90625000e-03 + 3.90625000e-03 3.90625000e-03 1.17187500e-02 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 + 8.59375000e-02 0. 1.28906250e-01 0. 0. 0. 1.56250000e-02 0. 0. + 0. 0. 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.95312500e-02 1.95312500e-02 5.07812500e-02 0. 4.29687500e-02 + 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 7.81250000e-03 0. 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 7.81250000e-03 + 1.95312500e-02 7.03125000e-02 3.90625000e-02 0. 7.81250000e-03 + 7.81250000e-03 3.90625000e-03 3.90625000e-03 1.17187500e-02 + 3.90625000e-03 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 1.17187500e-02 2.34375000e-02 1.17187500e-02 + 1.17187500e-02 0. 0. 3.90625000e-03 0. 0. 0. 1.56250000e-02 + 3.90625000e-03 0. 7.81250000e-03 3.90625000e-03 0. + 1.17187500e-02 1.56250000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 0. 7.81250000e-03 1.17187500e-02 1.56250000e-02 + 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 2.73437500e-02 + 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 1.17187500e-02 0. + 0. 0. 3.90625000e-03 0. 1.17187500e-02 3.90625000e-03 + 3.90625000e-03 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 3.90625000e-03 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 1.17187500e-02 1.56250000e-02 0. 1.17187500e-02 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 1.17187500e-02 3.12500000e-02 0. 1.95312500e-02 + 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 3.90625000e-03 2.73437500e-02 5.85937500e-02 4.68750000e-02 + 0. 7.81250000e-03 0. 3.90625000e-03 0. 7.81250000e-03 + 2.73437500e-02 0. 0. 1.17187500e-02 2.34375000e-02 + 1.17187500e-02 1.95312500e-02 6.64062500e-02 3.51562500e-02 + 3.51562500e-02 0. 3.90625000e-03 7.81250000e-03 3.90625000e-03 + 0. 7.81250000e-03 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. + 1.56250000e-02 4.29687500e-02 1.56250000e-02 0. 0. + 3.90625000e-03 0. 0. 7.81250000e-03 2.73437500e-02 0. 0. 0. + 3.12500000e-02 0. 1.17187500e-02 1.95312500e-02 3.90625000e-03 + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. + 7.81250000e-03 0. 3.90625000e-03 0. 2.34375000e-02 0. + 2.73437500e-02 0. 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.51562500e-02 0. + 2.73437500e-02 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 1.17187500e-02 1.56250000e-02 0. 0. + 3.90625000e-03 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 2.34375000e-02 5.07812500e-02 0. 0. + 3.90625000e-03 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. 0. 0. + 0. 3.90625000e-03 3.51562500e-02 3.51562500e-02 6.25000000e-02 + 3.90625000e-03 1.56250000e-02 3.90625000e-03 0. 0. + 1.95312500e-02 1.17187500e-02 7.81250000e-03 0. 0. + 7.81250000e-03 3.90625000e-03 2.73437500e-02 7.03125000e-02 + 3.12500000e-02 3.90625000e-02 0. 7.81250000e-03 0. + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 0. 1.95312500e-02 3.12500000e-02 2.34375000e-02 0. 0. 0. 0. 0. + 0. 1.17187500e-02 0. 0. 0. 1.17187500e-02 3.90625000e-03 + 1.56250000e-02 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 3.90625000e-03 0. 0. + 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 2.73437500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 4.68750000e-02 3.90625000e-03 + 0. 0. 2.73437500e-02 0. 2.34375000e-02 7.81250000e-03 0. + 7.81250000e-03 0. 7.81250000e-03 0. 0. 0. 1.95312500e-02 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.12500000e-02 0. 2.73437500e-02 0. 3.90625000e-03 + 3.90625000e-03 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. + 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 1.95312500e-02 3.51562500e-02 0. 3.51562500e-02 + 0. 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 4.29687500e-02 7.03125000e-02 3.51562500e-02 + 0. 3.90625000e-03 0. 0. 7.81250000e-03 1.95312500e-02 + 2.34375000e-02 0. 0. 0. 2.34375000e-02 0. 3.12500000e-02 + 5.46875000e-02 8.98437500e-02 1.17187500e-02 1.17187500e-02 + 3.90625000e-03 3.90625000e-03 7.81250000e-03 7.81250000e-03 + 7.81250000e-03 3.90625000e-03 3.90625000e-03 0. 0. + 3.90625000e-03 0. 1.17187500e-02 3.51562500e-02 2.34375000e-02 + 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 1.95312500e-02 0. 8.59375000e-02 + 3.90625000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 3.12500000e-02 0. 1.17187500e-02 1.17187500e-02 + 1.17187500e-02 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 1.95312500e-02 7.81250000e-03 7.81250000e-03 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 2.73437500e-02 0. 3.51562500e-02 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 5.46875000e-02 0. + 3.51562500e-02 0. 3.90625000e-03 0. 1.95312500e-02 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 1.17187500e-02 + 1.56250000e-02 3.90625000e-03 0. 1.56250000e-02 3.90625000e-03 + 0. 0. 1.56250000e-02 0. 7.81250000e-03 0. 1.56250000e-02 + 3.90625000e-03 2.34375000e-02 0. 9.37500000e-02 1.21093750e-01 + 1.95312500e-02 3.90625000e-03 1.17187500e-02 7.81250000e-03 0. + 1.56250000e-02 7.81250000e-03 7.81250000e-03 0. 3.90625000e-03 + 0. 3.90625000e-03 0. 0. 1.95312500e-02 7.81250000e-03 + 7.81250000e-03 0. 0. 1.17187500e-02 0. 1.17187500e-02 0. 0. 0. + 0. 0. 1.56250000e-02 0. 5.46875000e-02 7.81250000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 1.56250000e-02 3.90625000e-03 7.81250000e-03 1.17187500e-02 + 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 3.90625000e-03 0. 7.81250000e-03 0. + 1.17187500e-02 0. 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. 0. + 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 1.17187500e-02 7.81250000e-03 5.46875000e-02 0. 4.29687500e-02 + 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 0. 3.90625000e-03 0. + 0. 0. 1.95312500e-02 3.90625000e-03 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 6.25000000e-02 0. + 4.29687500e-02 0. 3.90625000e-03 0. 1.17187500e-02 + 3.90625000e-03 1.17187500e-02 0. 3.90625000e-03 3.90625000e-03 + 0. 0. 7.81250000e-03 0. 7.81250000e-03 0. 7.81250000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 3.90625000e-03 + 0. 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 + 1.01562500e-01 4.68750000e-02 2.73437500e-02 7.81250000e-03 + 2.34375000e-02 7.81250000e-03 7.81250000e-03 1.56250000e-02 + 6.64062500e-02 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 1.56250000e-02 4.68750000e-02 7.81250000e-03 0. 0. + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 0. 2.34375000e-02 3.12500000e-02 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. + 1.17187500e-02 0. 1.95312500e-02 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. 1.56250000e-02 + 0. 0. 0. 1.17187500e-02 0. 7.81250000e-03 3.90625000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 6.25000000e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 1.17187500e-02 0. 1.17187500e-02 0. 3.90625000e-03 0. + 2.73437500e-02 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.95312500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.95312500e-02 7.81250000e-03 3.90625000e-03 0. 1.17187500e-02 + 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. + 1.17187500e-02 5.46875000e-02 1.95312500e-02 0. 1.56250000e-02 + 0. 0. 0. 7.81250000e-03 2.73437500e-02 3.90625000e-03 0. + 3.90625000e-03 7.81250000e-03 3.90625000e-03 7.81250000e-03 + 4.68750000e-02 2.73437500e-02 3.90625000e-03 0. 0. + 3.90625000e-03 0. 0. 2.34375000e-02 0. 0. 0. 0. 3.90625000e-03 + 0. 7.81250000e-03 3.12500000e-02 1.95312500e-02 3.90625000e-03 + 0. 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 0. + 0. 1.17187500e-02 3.90625000e-03 3.90625000e-03 1.95312500e-02 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. + 3.51562500e-02 0. 1.56250000e-02 3.90625000e-03 7.81250000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 4.68750000e-02 0. 0. 0. 0. 0. 0. 0. + 3.12500000e-02 0. 0. 0. 2.73437500e-02 0. 1.17187500e-02 0. 0. + 7.81250000e-03 0. 3.90625000e-03 0. 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 7.81250000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 4.68750000e-02 5.85937500e-02 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.71875000e-01 1.13281250e-01 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-02 1.56250000e-02 0. 1.17187500e-02 3.12500000e-02 + 3.90625000e-03 7.81250000e-03 2.34375000e-02 1.95312500e-02 + 1.95312500e-02 3.90625000e-03 1.17187500e-02 7.81250000e-03 0. + 3.90625000e-03 1.56250000e-02 0. 0. 0. 0. 0. 0. 1.17187500e-02 + 2.34375000e-02 7.81250000e-03 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 0. 3.90625000e-03 3.90625000e-03 0. 0. + 7.81250000e-03 0. 1.56250000e-02 2.34375000e-02 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 + 0. 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 7.81250000e-03 0. 0. 3.90625000e-03 3.90625000e-03 + 1.56250000e-02 0. 1.95312500e-02 0. 0. 0. 3.12500000e-02 0. 0. + 0. 0. 0. 0. 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 5.07812500e-02 0. 9.37500000e-02 3.90625000e-03 0. 0. + 5.07812500e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 3.12500000e-02 1.79687500e-01 0. 6.25000000e-02 0. + 3.90625000e-03 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 2.34375000e-02 5.46875000e-02 0. 1.17187500e-02 + 3.90625000e-03 0. 0. 3.90625000e-03 7.81250000e-03 + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 2.34375000e-02 + 5.07812500e-02 3.12500000e-02 0. 0. 2.34375000e-02 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 0. 0. + 1.17187500e-02 0. 1.56250000e-02 3.12500000e-02 1.17187500e-02 + 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. 7.81250000e-03 + 1.56250000e-02 0. 0. 0. 1.17187500e-02 3.90625000e-03 + 3.12500000e-02 4.29687500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-02 1.95312500e-02 1.56250000e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.17187500e-02 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 2.34375000e-02 0. 3.90625000e-03 0. 3.51562500e-02 0. + 1.56250000e-02 3.90625000e-03 0. 7.81250000e-03 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 2.73437500e-02 + 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.56250000e-02 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 1.56250000e-02 2.73437500e-02 0. 3.90625000e-03 + 0. 3.90625000e-03 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 3.51562500e-02 0. + 2.34375000e-02 3.90625000e-03 0. 0. 1.56250000e-02 0. 0. 0. 0. + 0. 0. 0. 7.81250000e-03 2.73437500e-02 1.17187500e-02 0. + 1.17187500e-02 0. 0. 0. 3.90625000e-03 2.73437500e-02 0. 0. + 2.34375000e-02 7.81250000e-03 3.90625000e-03 1.17187500e-02 + 5.85937500e-02 6.64062500e-02 1.56250000e-02 3.90625000e-03 0. + 1.17187500e-02 7.81250000e-03 3.90625000e-03 3.51562500e-02 + 1.56250000e-02 0. 0. 0. 0. 1.17187500e-02 0. 6.64062500e-02 + 3.12500000e-02 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. + 1.56250000e-02 0. 1.17187500e-02 7.81250000e-03 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 7.81250000e-03 1.95312500e-02 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 5.46875000e-02 0. 0. 0. 0. 0. 0. + 3.90625000e-03 4.29687500e-02 0. 3.90625000e-03 0. + 1.17187500e-02 0. 1.95312500e-02 2.34375000e-02 0. + 1.17187500e-02 0. 0. 0. 0. 0. 1.56250000e-02 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 2.34375000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 3.90625000e-03 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 1.17187500e-02 0. 3.90625000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 1.95312500e-02 + 5.07812500e-02 3.90625000e-03 0. 1.56250000e-02 0. 0. 0. + 7.81250000e-03 4.68750000e-02 3.90625000e-03 3.90625000e-03 0. + 1.17187500e-02 1.17187500e-02 2.73437500e-02 9.37500000e-02 + 3.90625000e-02 7.81250000e-03 0. 3.90625000e-03 0. + 1.17187500e-02 0. 1.17187500e-02 3.90625000e-03 3.90625000e-03 + 0. 0. 1.56250000e-02 3.90625000e-03 3.90625000e-03 + 4.68750000e-02 2.34375000e-02 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 5.85937500e-02 0. 0. 0. 6.25000000e-02 + 0. 7.81250000e-02 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 3.51562500e-02 + 3.90625000e-03 3.90625000e-02 1.56250000e-02 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 2.34375000e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. 6.64062500e-02 + 0. 0. 0. 5.07812500e-02 1.56250000e-02 5.07812500e-02 + 2.73437500e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 1.17187500e-02 + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.95312500e-02 0. 0. 3.90625000e-03 3.90625000e-03 0. 0. + 3.90625000e-03 3.12500000e-02 7.81250000e-03 3.90625000e-03 0. + 2.34375000e-02 7.81250000e-03 3.51562500e-02 2.73437500e-02 + 8.59375000e-02 3.90625000e-03 0. 0. 3.51562500e-02 0. + 3.90625000e-03 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 1.56250000e-02 0. 0. 5.07812500e-02 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 1.95312500e-02 + 0. 1.56250000e-02 1.95312500e-02 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. + 0. 2.34375000e-02 0. 0. 0. 7.81250000e-02 0. 3.12500000e-02 + 1.56250000e-02 7.81250000e-03 1.56250000e-02 0. 1.17187500e-02 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 5.07812500e-02 0. 0. 0. 4.29687500e-02 0. 3.90625000e-03 + 3.90625000e-03 7.81250000e-03 1.17187500e-02 3.90625000e-03 + 7.81250000e-03 0. 0. 0. 3.90625000e-02 0. 0. 0. 0. 0. + 3.90625000e-03 0. 2.34375000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.90625000e-03 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 3.90625000e-03 + 1.95312500e-02 0. 7.42187500e-02 0. 0. 0. 1.56250000e-02 0. + 3.90625000e-03 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 0. 0. + 0. 0. 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 1.17187500e-02 0. 3.51562500e-02 0. 0. 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 7.81250000e-03 3.90625000e-03 3.90625000e-03 0. + 7.81250000e-03 7.81250000e-03 0. 3.90625000e-03 5.85937500e-02 + 4.68750000e-02 0. 7.81250000e-03 3.90625000e-03 7.03125000e-02 + 0. 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 7.81250000e-03 0. + 7.81250000e-03 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. + 0. 7.81250000e-03 0. 0. 3.90625000e-03 1.17187500e-02 0. 0. 0. + 7.03125000e-02 0. 1.95312500e-02 2.34375000e-02 3.90625000e-02 + 0. 7.81250000e-03 1.95312500e-02 1.95312500e-02 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 1.56250000e-02 0. 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 0. 1.56250000e-02 + 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 7.81250000e-03 7.81250000e-03 0. 4.29687500e-02 + 3.90625000e-03 3.12500000e-02 0. 1.28906250e-01 0. 0. 0. + 2.73437500e-02 0. 0. 0. 7.81250000e-03 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 7.81250000e-03 0. 0. 0. 1.95312500e-02 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. + 7.81250000e-03 3.90625000e-03 0. 4.68750000e-02 3.90625000e-03 + 3.90625000e-03 0. 8.98437500e-02 1.56250000e-02 3.90625000e-03 + 3.90625000e-03 0. 3.51562500e-02 0. 1.56250000e-02 + 7.81250000e-03 0. 0. 3.90625000e-03 0. 7.81250000e-03 0. + 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 0. 3.90625000e-03 0. + 3.90625000e-03 0. 7.81250000e-03 1.17187500e-02 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 2.34375000e-02 0. 2.34375000e-02 + 2.73437500e-02 1.56250000e-02 0. 0. 0. 1.17187500e-02 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 7.81250000e-03 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 0. 6.25000000e-02 0. 0. 0. 0. 0. 0. 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 2.73437500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.12500000e-02 7.81250000e-03 + 1.56250000e-02 0. 1.60156250e-01 7.81250000e-03 3.90625000e-03 + 0. 1.56250000e-01 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 1.17187500e-02 + 0. 1.17187500e-02 0. 2.34375000e-02 0. 0. 0. 1.17187500e-02 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 1.56250000e-02 0. + 2.34375000e-02 0. 0. 0. 0. 1.17187500e-02 7.81250000e-03 0. + 1.56250000e-02 0. 0. 0. 6.64062500e-02 7.81250000e-03 + 2.34375000e-02 0. 0. 7.81250000e-03 0. 1.95312500e-02 + 7.03125000e-02 0. 0. 0. 0. 0. 0. 2.34375000e-02 1.09375000e-01 + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 3.90625000e-03 + 0. 1.56250000e-02 4.68750000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 0. 0. 7.81250000e-02 0. 0. 0. 0. 0. 0. 0. + 3.51562500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.12500000e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 3.90625000e-03 1.17187500e-02 0. 8.98437500e-02 + 0. 0. 0. 2.26562500e-01 0. 0. 0. 3.90625000e-03 0. 0. + 3.90625000e-03 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. + 2.34375000e-02 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. + 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 5.07812500e-02 + 7.81250000e-03 1.17187500e-02 0. 3.90625000e-03 3.90625000e-03 + 3.90625000e-03 0. 4.29687500e-02 0. 0. 0. 0. 1.17187500e-02 0. + 1.56250000e-02 5.46875000e-02 0. 0. 0. 0. 3.90625000e-03 0. + 3.90625000e-03 0. 0. 3.90625000e-03 0. 0. 1.56250000e-02 0. + 6.64062500e-02 5.46875000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 1.56250000e-02 3.90625000e-03 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. + 1.17187500e-02 0. 1.17187500e-02 3.90625000e-03 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 6.25000000e-02 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 7.81250000e-03 0. 4.68750000e-02 3.90625000e-03 + 3.90625000e-02 0. 1.56250000e-02 0. 5.85937500e-02 0. 0. 0. 0. + 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 3.12500000e-02 0. 1.17187500e-02 0. 2.34375000e-02 0. 0. + 0. 3.12500000e-02 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 7.81250000e-03 4.29687500e-02 0. 7.81250000e-03 0. 0. 0. + 1.95312500e-02 3.90625000e-03 3.90625000e-03 0. 0. + 3.90625000e-03 0. 0. 1.05468750e-01 2.34375000e-02 0. 0. 0. + 2.34375000e-02 3.90625000e-03 0. 2.73437500e-02 0. 0. 0. 0. + 3.90625000e-03 3.90625000e-03 3.90625000e-03 3.90625000e-03 + 7.81250000e-03 1.17187500e-02 0. 0. 1.17187500e-02 0. 0. + 3.90625000e-03 3.90625000e-03 0. 0. 0. 7.42187500e-02 0. + 5.85937500e-02 3.12500000e-02 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.42187500e-02 0. 5.85937500e-02 3.90625000e-02 1.56250000e-02 + 3.90625000e-03 0. 0. 2.73437500e-02 0. 0. 3.90625000e-03 0. 0. + 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 1.95312500e-02 0. 0. 3.90625000e-03 1.17187500e-02 + 3.90625000e-03 0. 3.90625000e-03 1.17187500e-02 0. 0. + 3.90625000e-03 1.95312500e-02 0. 1.17187500e-02 7.81250000e-03 + 0. 3.90625000e-03 0. 0. 0. 0. 0. 1.95312500e-02 0. 0. 0. 0. 0. + 0. 0. 1.95312500e-02 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 1.56250000e-02 0. 7.81250000e-03 0. + 3.90625000e-03 0. 5.46875000e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 3.90625000e-03 3.90625000e-03 0. 1.17187500e-02 + 3.90625000e-03 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 5.46875000e-02 0. 1.56250000e-02 + 3.90625000e-03 0. 0. 1.95312500e-02 7.81250000e-03 + 7.81250000e-03 0. 7.81250000e-03 1.17187500e-02 0. 0. + 5.46875000e-02 3.12500000e-02 0. 0. 0. 1.56250000e-02 + 7.81250000e-03 7.81250000e-03 3.51562500e-02 3.90625000e-03 0. + 0. 0. 2.73437500e-02 1.56250000e-02 3.90625000e-03 + 3.12500000e-02 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 0. 0. 0. 3.90625000e-02 0. 1.56250000e-02 + 3.51562500e-02 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 2.34375000e-02 0. + 4.29687500e-02 3.51562500e-02 2.34375000e-02 0. 0. 0. + 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 0. 0. 0. 0. 0. 0. 3.12500000e-02 0. + 3.90625000e-03 3.90625000e-03 4.68750000e-02 0. 3.12500000e-02 + 7.81250000e-03 0. 0. 0. 1.56250000e-02 0. 7.81250000e-03 0. + 8.20312500e-02 0. 0. 0. 0. 0. 0. 0. 5.07812500e-02 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-02 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 3.90625000e-03 0. 0. 0. 0. 0. 3.90625000e-03 0. + 1.56250000e-02 3.90625000e-03 7.81250000e-03 0. 3.90625000e-03 + 0. 0. 3.90625000e-03 3.51562500e-02 0. 0. 0. 0. 0. 0. 0. + 7.81250000e-03 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 1.17187500e-02 0. 0. 0. 3.90625000e-03 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 + 0. 0. 0. 0. 1.17187500e-02 0. 0. 7.81250000e-03 0. + 3.90625000e-03 0. 7.03125000e-02 6.25000000e-02 7.81250000e-03 + 3.90625000e-03 0. 3.51562500e-02 3.90625000e-03 3.90625000e-03 + 1.95312500e-02 7.81250000e-03 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 1.17187500e-02 3.51562500e-02 3.90625000e-03 0. + 0. 0. 0. 0. 0. 0. 1.56250000e-02 0. 3.90625000e-03 0. + 1.95312500e-02 0. 2.34375000e-02 2.73437500e-02 3.90625000e-03 + 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 0. 3.90625000e-03 2.34375000e-02 0. 0. 0. 3.90625000e-03 0. 0. + 0. 1.17187500e-02 0. 0. 0. 4.68750000e-02 0. 3.90625000e-03 + 2.34375000e-02 2.34375000e-02 0. 0. 0. 0. 0. 0. 3.90625000e-03 + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 3.90625000e-03 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. + 1.17187500e-02 0. 7.81250000e-03 0. 0. 0. 0. 0. 1.48437500e-01 + 3.90625000e-03 0. 7.81250000e-03 6.25000000e-02 7.81250000e-03 + 3.12500000e-02 1.95312500e-02 0. 0. 0. 0. 0. 7.81250000e-03 0. + 1.56250000e-02 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 7.81250000e-03 0. 0. 0. 0. 0. + 3.90625000e-03 0. 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.56250000e-02 + 3.90625000e-03 0. 0. 7.81250000e-03 0. 3.90625000e-03 0. + 7.81250000e-03 0. 0. 0. 0. 0. 0. 0. 0. 3.90625000e-03 0. 0. 0. + 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. + 3.90625000e-03 0. 0. 0. 0. 0. 0. 0. 0. 1.17187500e-02 0. 0. + 7.81250000e-03 0. 0. 0. 7.81250000e-03 3.51562500e-02 0. + 3.90625000e-03 0. 7.81250000e-03 7.81250000e-03 3.90625000e-03 + 4.68750000e-02
+ + 1 + 1 +
i
+ + 0
+ +
+
diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/recog.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/recog.py" new file mode 100644 index 00000000..952cf577 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/recog.py" @@ -0,0 +1,52 @@ +from src import * +import argparse + + + +def main(): + + parser = argparse.ArgumentParser(description='options for training, one by one each pet') + parser.add_argument( + '-f', '--path_toimage', required=True, type=str, help='path to the image where you have the pet you want to recognize') + parser.add_argument( + '-m', '--model', required=False, type=str, help='path to previous model') + args = parser.parse_args() + + try: + with open('match.json','r') as fp: match = json.load(fp) + except: + print('No model so can\' recognize anything') + return + + yolob = Yolobody() + yoloe = Yoloeye() + yolof = Yoloface() + haar = HaarCascadeExt() + face_database = Model(args.model) + + im = cv2.imread(args.path_toimage) + ret = yolob.detect(im) + if not len(ret): print('We do not detect neither dog or cat in the {} image'.format(idx)) ; return + if len(ret) > 1: print('We detected more than one dog or cat in the {} image'.format(idx)) ; return + x,y,w,h = ret[0][2] + X,Y,W,H = cent2rect(x,y,w,h) + croped = im[Y:Y+H,X:X+W] + + ret2 = yolof.detect(croped) + if not len(ret2): print('We do not detect neither dog or cat face in the {} image'.format(idx)) ; return + if len(ret2) > 1: print('We detected more than one dog or cat face in the {} image'.format(idx)) ; return + x,y,w,h = ret2[0][2] + X,Y,W,H = cent2rect(x,y,w,h) + closeup = croped[Y:Y+H,X:X+W] + + ret3 = haar.detect(closeup,(0,0))[0] + if not (len(ret3)): print('We do not detect neither dog or cat face in the {} image'.format(idx)) ; return + #if len(ret3) > 1: print('We detected more than one dog or cat face in the {} image'.format(idx)) ; continue + nX,nY,nW,nH = ret3 + + label,conf = face_database.prediction(closeup[nY:nY+nH,nX:nX+nW]) + + print("We recognize (among all the pet) that {} looks the most like the one on the picture".format(match[int(label)])) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/requirements.txt" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/requirements.txt" new file mode 100644 index 00000000..95f42481 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/requirements.txt" @@ -0,0 +1,7 @@ +opencv-python +opencv-contrib-python +numpy +scikit-learn +seaborn +Pillow + diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/src/__init__.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/src/__init__.py" new file mode 100644 index 00000000..9a6b10ee --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/src/__init__.py" @@ -0,0 +1,135 @@ +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.image as mpimg +from PIL import Image +import os +from sklearn.model_selection import train_test_split +import cv2 +import sys +import re +import pickle +import time +from os import listdir +from copy import deepcopy +from math import * + +sys.path.insert(0, 'DARK/python/') +from darknet import * + +########################################################################################################### + +""" All the nice classes here """ + +class Yoloface: + + def __init__(self,thresh=0.2,nms=0.1): + self.net = load_net("DARK/cfg/cat-dog-yolov3-tiny.cfg".encode("utf-8"), "DARK/weights/front_prof2_200k.weights".encode("utf-8"), 0) + self.meta = load_meta("DARK/cfg/cat-dog-obj.data".encode('utf-8')) + self.thresh = thresh + self.nms = nms + + def detect(self,img): + R = detect_s(self.net,self.meta,img,thresh=self.thresh,nms=self.nms) + if len(R) == 0: + print('no damn thing detected') + sys.exit(0) + return R + +class Yolobody: + + def __init__(self,thresh=0.2,nms=0.1): + self.net = load_net("DARK/cfg/cat-dog-yolov3-tiny.cfg".encode("utf-8"), "DARK/weights/body_500k.weights".encode("utf-8"), 0) + self.meta = load_meta("DARK/cfg/cat-dog-obj.data".encode('utf-8')) + self.thresh = thresh + self.nms = nms + + def detect(self,img): + R = detect_s(self.net,self.meta,img,thresh=self.thresh,nms=self.nms) + if len(R) == 0: + print('no damn thing detected') + sys.exit(0) + return R + +class Yoloeye: + + def __init__(self,thresh=0.2,nms=0.1): + self.net = load_net("DARK/cfg/cat-dog-yolov3-tiny.cfg".encode("utf-8"), "DARK/weights/eye_200k.weights".encode("utf-8"), 0) + self.meta = load_meta("DARK/cfg/cat-dog-obj.data".encode('utf-8')) + self.thresh = thresh + self.nms = nms + + def detect(self,img): + R = detect_s(self.net,self.meta,img,thresh=self.thresh,nms=self.nms) + if len(R) == 0: + print('no damn thing detected') + sys.exit(0) + return R + + +class HaarCascadeExt: + def __init__(self,SF=1.03,N=6): + self.cat_ext_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalcatface_extended.xml') + self.SF = SF + self.N = N + + def detect(self,img,dim): + R = self.cat_ext_cascade.detectMultiScale(img,scaleFactor=self.SF,minNeighbors=self.N,minSize=dim) + return R + + +class Model: + def __init__(self,filename=None,mod=1): + + if mod == 1:self.model = cv2.face.LBPHFaceRecognizer_create() + elif mod == 2 :self.model = cv2.face.FisherFaceRecognizer_create() + elif mod == 3 :self.model = cv2.face.EigenFaceRecognizer_create() + if filename: + if os.path.exists('models/'+filename): self.model.read('models/'+filename) + else: print("Alright, you didn't input a correct model so we will start from scratch") + else: print("Alright, you didn't input a model so we will start from scratch") + self.filename = filename + self.mod = mod + + def prediction(self,img): + + if len(img.shape) == 3: return self.model.predict(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)) + return self.model.predict(img) + + def training(self,array,label_nb): #Might need to do some resizing here + Training_Data, Labels = [] , [] + for im in array: + # in case turn into grayscale + if len(im.shape)==3: im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) + Training_Data.append( np.asarray( im, dtype=np.uint8)) + Labels.append(label_nb) + print('Gathering Data to train on !') + Labels = np.asarray(Labels, dtype=np.int32) #I mean, i guess database won't exceed 256 for now + + face = np.asarray( Training_Data) + if self.mod == 1: + if self.filename: self.model.update(face,Labels) + else: self.model.train(face,Labels) + else: + try: self.model.train(face,Labels) + except: sys.exit(0) + print("Model updated sucessefully, Congratulations") + if self.filename: + try :self.model.save('models/'+self.filename) + except: print('Could not save the model') + else: + try :self.model.save('models/standard.xml') + except: print('Could not save the model') + +def cent2rect(x,y,w,h): + x,y,w,h = int(x),int(y),int(w),int(h) + x,y = x-w//2,y-h//2 + if x < 0: x = 0 + if y < 0: y = 0 + return x,y,w,h + + +def add_rect(img,bbox): + x,y,w,h = bbox + tmp = deepcopy(img) + im = cv2.rectangle(tmp, (x,y), (x+w,y+h), (255, 0, 0), 2) + return im diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/test_images/cat.jpg" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/test_images/cat.jpg" new file mode 100644 index 00000000..a838cfc3 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/test_images/cat.jpg" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/test_images/mult_cat.png" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/test_images/mult_cat.png" new file mode 100644 index 00000000..120c9327 Binary files /dev/null and "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/test_images/mult_cat.png" differ diff --git "a/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/train.py" "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/train.py" new file mode 100644 index 00000000..4ee41bb7 --- /dev/null +++ "b/1 \351\201\227\345\244\261\345\256\240\347\211\251\347\232\204\346\231\272\350\203\275\345\257\273\346\211\276/\347\210\261\345\256\240\351\235\242\351\203\250\350\257\206\345\210\253--\345\205\203\347\273\204/pet_recognition/train.py" @@ -0,0 +1,65 @@ +from src import * +import argparse + + + +def main(): + + parser = argparse.ArgumentParser(description='options for training, one by one each pet') + parser.add_argument( + '-f', '--folder', required=True, type=str, help='path to the folder image where you have the pet you want to recognize') + parser.add_argument( + '-n', '--name', required=True, type=str, help='pet\'s name') + parser.add_argument( + '-m', '--model', required=False, type=str, help='path to previous model') + args = parser.parse_args() + + + yolob = Yolobody() + yoloe = Yoloeye() + yolof = Yoloface() + haar = HaarCascadeExt() + face_database = Model(args.model) + + try: + with open('match.json','r') as fp: match = json.load(fp) + except: + match = {} + next_idx = len(match) + + succ = 0 + specimen = [] + for idx,im_path in enumerate(os.listdir(args.folder),start=0): + im = cv2.imread(im_path) + ret = yolob.detect(im) + if not len(ret): print('We do not detect neither dog or cat in the {} image'.format(idx)) ; continue + if len(ret) > 1: print('We detected more than one dog or cat in the {} image'.format(idx)) ; continue + x,y,w,h = ret[0][2] + X,Y,W,H = cent2rect(x,y,w,h) + croped = im[Y:Y+H,X:X+W] + + ret2 = yolof.detect(croped) + if not len(ret2): print('We do not detect neither dog or cat face in the {} image'.format(idx)) ; continue + if len(ret2) > 1: print('We detected more than one dog or cat face in the {} image'.format(idx)) ; continue + x,y,w,h = ret2[0][2] + X,Y,W,H = cent2rect(x,y,w,h) + closeup = croped[Y:Y+H,X:X+W] + + ret3 = haar.detect(closeup,(0,0))[0] + if not (len(ret3)): print('We do not detect neither dog or cat face in the {} image'.format(idx)) ; continue + #if len(ret3) > 1: print('We detected more than one dog or cat face in the {} image'.format(idx)) ; continue + nX,nY,nW,nH = ret3 + specimen.append(closeup[nY:nY+nH,nX:nX+nW]) + succ += 1 + + print('Only {} images were taken to train'.format(succ)) + if succ: + face_database.training(specimen,next_idx) + match[next_idx] = args.name + + with open('match.json', 'w') as fp: + json.dump(match, fp) + + +if __name__ == '__main__': + main() \ No newline at end of file