- - **NOTE** This repo is not being maintained -- Вместо этого используйте timm . Он включает в себя все эти определения моделей (совместимые веса) и гораздо больше.
«Общая» реализация эффективного сети, Mixnet, MobilenETV3 и т. Д., Которую, которая охватывает большую часть вычислительной/параметра -эффективной архитектуры, полученных из последовательности блока Mobilenet V1/V2, включая те, которые обнаружены с помощью автоматического поиска нейронной архитектуры.
Все модели реализованы классами GeneffIftNet или MobilENETV3 с определениями архитектуры на основе строк для настройки макетов блоков (идея отсюда)
timm (82,1 TOP-1)timmfix_group_fanout=False в initialize_weight_goog для старого поведенияap , поскольку они используют другую предварительную обработку (среднее значение/STD) из исходных весов Base/AA/RA/RA.Реализованные модели включают:
Первоначально я внедрил и обучил некоторые эти модели с кодом здесь, этот репозиторий содержит только модели GeneffIftNet, валидацию и связанный код экспорта ONNX/Caffe2.
Мне удалось обучить несколько моделей до точности, близкой к или выше исходных документов и официального имплла. Мой код обучения здесь: https://github.com/rwightman/pytorch-image-models
| Модель | Prec@1 (err) | Prec@5 (err) | PARAM#(M) | Madds (m) | Масштабирование изображений | Разрешение | Обрезать |
|---|---|---|---|---|---|---|---|
| EfficiveNet_b3 | 82,240 (17,760) | 96.116 (3.884) | 12.23 | TBD | Бикубик | 320 | 1.0 |
| EfficiveNet_b3 | 82,076 (17,924) | 96.020 (3.980) | 12.23 | TBD | Бикубик | 300 | 0,904 |
| mixnet_xl | 81.074 (18,926) | 95,282 (4,718) | 11.90 | TBD | Бикубик | 256 | 1.0 |
| EfficiveNet_b2 | 80.612 (19.388) | 95,318 (4,682) | 9.1 | TBD | Бикубик | 288 | 1.0 |
| mixnet_xl | 80.476 (19.524) | 94,936 (5,064) | 11.90 | TBD | Бикубик | 224 | 0,875 |
| EfficiveNet_b2 | 80.288 (19.712) | 95.166 (4,834) | 9.1 | 1003 | Бикубик | 260 | 0,890 |
| mixnet_l | 78.976 (21.024 | 94.184 (5,816) | 7.33 | TBD | Бикубик | 224 | 0,875 |
| EfficiveNet_b1 | 78.692 (21.308) | 94.086 (5,914) | 7,8 | 694 | Бикубик | 240 | 0,882 |
| EfficiveNet_es | 78.066 (21,934) | 93,926 (6,074) | 5.44 | TBD | Бикубик | 224 | 0,875 |
| EfficiveNet_b0 | 77.698 (22.302) | 93,532 (6,468) | 5.3 | 390 | Бикубик | 224 | 0,875 |
| mobilenetv2_120d | 77.294 (22.706 | 93,502 (6,498) | 5.8 | TBD | Бикубик | 224 | 0,875 |
| mixnet_m | 77.256 (22,744) | 93,418 (6,582) | 5.01 | 353 | Бикубик | 224 | 0,875 |
| Mobilenetv2_140 | 76.524 (23.476) | 92,990 (7,010) | 6.1 | TBD | Бикубик | 224 | 0,875 |
| mixnet_s | 75,988 (24,012) | 92,794 (7,206) | 4.13 | TBD | Бикубик | 224 | 0,875 |
| mobilenetv3_large_100 | 75,766 (24.234) | 92,542 (7,458) | 5.5 | TBD | Бикубик | 224 | 0,875 |
| mobilenetv3_rw | 75,634 (24,366) | 92,708 (7,292) | 5.5 | 219 | Бикубик | 224 | 0,875 |
| efffivenet_lite0 | 75,472 (24,528) | 92,520 (7,480) | 4.65 | TBD | Бикубик | 224 | 0,875 |
| mnasnet_a1 | 75,448 (24,552) | 92,604 (7,396) | 3.9 | 312 | Бикубик | 224 | 0,875 |
| fbnetc_100 | 75,124 (24,876) | 92,386 (7,614) | 5.6 | 385 | билинеар | 224 | 0,875 |
| MobilEnetv2_110d | 75.052 (24,948) | 92.180 (7,820) | 4.5 | TBD | Бикубик | 224 | 0,875 |
| mnasnet_b1 | 74,658 (25,342) | 92.114 (7,886) | 4.4 | 315 | Бикубик | 224 | 0,875 |
| spnasnet_100 | 74.084 (25,916) | 91.818 (8.182) | 4.4 | TBD | билинеар | 224 | 0,875 |
| Mobilenetv2_100 | 72,978 (27,022) | 91.016 (8,984) | 3.5 | TBD | Бикубик | 224 | 0,875 |
Более предварительно предварительно представленные модели ...
Веса, переносимые из контрольных точек TensorFlow для моделей EfficientNet, в значительной степени соответствуют точности в TensorFlow после добавления того же эквивалента прокладки, эквивалентного прокладки, и те же коэффициенты обрезки, масштабирование изображений и т. Д. (См. Таблицу) используются через ARGS CMD -линии.
ВАЖНЫЙ:
--tf-preprocessing во время проверки улучшит оценки на 0,1-0,5%, что очень близко к исходному TF Impl. Для запуска валидации для TF_EFFITMET_B5: python validate.py /path/to/imagenet/validation/ --model tf_efficientnet_b5 -b 64 --img-size 456 --crop-pct 0.934 --interpolation bicubic
Для выполнения проверки с предварительной обработкой TF для TF_EFFITMET_B5: python validate.py /path/to/imagenet/validation/ --model tf_efficientnet_b5 -b 64 --img-size 456 --tf-preprocessing
Чтобы запустить проверку для модели с предварительной обработкой начала, то есть EffififyNet-B8 Advprop: python validate.py /path/to/imagenet/validation/ --model tf_efficientnet_b8_ap -b 48 --num-gpu 2 --img-size 672 --crop-pct 0.954 --mean 0.5 --std 0.5
| Модель | Prec@1 (err) | Prec@5 (err) | PARAM # | Масштабирование изображений | Размер изображения | Обрезать |
|---|---|---|---|---|---|---|
| TF_EFFITMETNTE_L2_NS *TFP | 88,352 (11,648) | 98,652 (1,348) | 480 | Бикубик | 800 | N/a |
| TF_EFFITMETNTE_L2_NS | TBD | TBD | 480 | Бикубик | 800 | 0,961 |
| TF_EFFITMETNTE_L2_NS_475 | 88.234 (11,766) | 98,546 (1.454) | 480 | Бикубик | 475 | 0,936 |
| TF_EFFITMETNTE_L2_NS_475 *TFP | 88.172 (11,828) | 98.566 (1,434) | 480 | Бикубик | 475 | N/a |
| TF_EFFITMETNTE_B7_NS *TFP | 86.844 (13.156) | 98.084 (1.916) | 66.35 | Бикубик | 600 | N/a |
| TF_EFFITMETNTE_B7_NS | 86.840 (13.160) | 98.094 (1.906) | 66.35 | Бикубик | 600 | N/a |
| TF_EFFITMETNTE_B6_NS | 86.452 (13.548) | 97,882 (2.118) | 43.04 | Бикубик | 528 | N/a |
| TF_EFFITMETNTE_B6_NS *TFP | 86.444 (13.556) | 97,880 (2.120) | 43.04 | Бикубик | 528 | N/a |
| TF_EFFITMETNTE_B5_NS *TFP | 86.064 (13,936) | 97,746 (2,254) | 30.39 | Бикубик | 456 | N/a |
| TF_EFFITMETNTE_B5_NS | 86.088 (13,912) | 97,752 (2,248) | 30.39 | Бикубик | 456 | N/a |
| TF_EFFITMETNTE_B8_AP *TFP | 85,436 (14,564) | 97.272 (2,728) | 87.4 | Бикубик | 672 | N/a |
| TF_EFFITMETNTENT_B8 *TFP | 85,384 (14,616) | 97.394 (2,606) | 87.4 | Бикубик | 672 | N/a |
| TF_EFFITMETNTE_B8 | 85,370 (14,630) | 97,390 (2,610) | 87.4 | Бикубик | 672 | 0,954 |
| TF_EFFITMETNTE_B8_AP | 85,368 (14,632) | 97.294 (2,706) | 87.4 | Бикубик | 672 | 0,954 |
| TF_EFFITMETNTE_B4_NS *TFP | 85,298 (14,702) | 97.504 (2,496) | 19.34 | Бикубик | 380 | N/a |
| TF_EFFITMETNTE_B4_NS | 85,162 (14,838) | 97,470 (2,530) | 19.34 | Бикубик | 380 | 0,922 |
| TF_EFFITMETNTE_B7_AP *TFP | 85,154 (14,846) | 97.244 (2,756) | 66.35 | Бикубик | 600 | N/a |
| TF_EFFITMETNTE_B7_AP | 85.118 (14,882) | 97.252 (2,748) | 66.35 | Бикубик | 600 | 0,949 |
| TF_EFFITMETNTE_B7 *TFP | 84,940 (15.060) | 97.214 (2,786) | 66.35 | Бикубик | 600 | N/a |
| TF_EFFITMETNT_B7 | 84,932 (15.068) | 97.208 (2,792) | 66.35 | Бикубик | 600 | 0,949 |
| TF_EFFITMETNTE_B6_AP | 84,786 (15,214) | 97.138 (2,862) | 43.04 | Бикубик | 528 | 0,942 |
| TF_EFFITMETNTE_B6_AP *TFP | 84,760 (15,240) | 97.124 (2,876) | 43.04 | Бикубик | 528 | N/a |
| TF_EFFITMETNTE_B5_AP *TFP | 84,276 (15,724) | 96,932 (3.068) | 30.39 | Бикубик | 456 | N/a |
| TF_EFFITMETNTE_B5_AP | 84,254 (15,746) | 96,976 (3.024) | 30.39 | Бикубик | 456 | 0,934 |
| TF_EFFITMETNTE_B6 *TFP | 84,140 (15,860) | 96,852 (3.148) | 43.04 | Бикубик | 528 | N/a |
| TF_EFFITMETNT_B6 | 84,110 (15,890) | 96.886 (3.114) | 43.04 | Бикубик | 528 | 0,942 |
| TF_EFFITMETNTE_B3_NS *TFP | 84,054 (15,946) | 96,918 (3.082) | 12.23 | Бикубик | 300 | N/a |
| TF_EFFITMETNTE_B3_NS | 84,048 (15,952) | 96,910 (3.090) | 12.23 | Бикубик | 300 | .904 |
| TF_EFFITMETNTE_B5 *TFP | 83,822 (16.178) | 96,756 (3.244) | 30.39 | Бикубик | 456 | N/a |
| TF_EFFITMETNTE_B5 | 83,812 (16.188) | 96,748 (3.252) | 30.39 | Бикубик | 456 | 0,934 |
| TF_EFFITMETNTE_B4_AP *TFP | 83,278 (16,722) | 96.376 (3,624) | 19.34 | Бикубик | 380 | N/a |
| TF_EFFITMETNTE_B4_AP | 83,248 (16,752) | 96.388 (3,612) | 19.34 | Бикубик | 380 | 0,922 |
| TF_EFFITMETNTE_B4 | 83,022 (16,978) | 96,300 (3,700) | 19.34 | Бикубик | 380 | 0,922 |
| TF_EFFITMETNTE_B4 *TFP | 82,948 (17.052) | 96.308 (3,692) | 19.34 | Бикубик | 380 | N/a |
| TF_EFFITMETNTE_B2_NS *TFP | 82,436 (17,564) | 96.268 (3,732) | 9.11 | Бикубик | 260 | N/a |
| TF_EFFITMETNTE_B2_NS | 82,380 (17,620) | 96.248 (3,752) | 9.11 | Бикубик | 260 | 0,89 |
| TF_EFFITMETNTE_B3_AP *TFP | 81.882 (18.118) | 95,662 (4,338) | 12.23 | Бикубик | 300 | N/a |
| TF_EFFITMETNTE_B3_AP | 81.828 (18.172) | 95,624 (4,376) | 12.23 | Бикубик | 300 | 0,904 |
| TF_EFFITMETNTE_B3 | 81.636 (18.364) | 95,718 (4,282) | 12.23 | Бикубик | 300 | 0,904 |
| TF_EFFITMETNTE_B3 *TFP | 81.576 (18.424) | 95,662 (4,338) | 12.23 | Бикубик | 300 | N/a |
| TF_EFFITMETNTE_LITE4 | 81.528 (18.472) | 95,668 (4,332) | 13.00 | билинеар | 380 | 0,92 |
| TF_EFFITMETNTE_B1_NS *TFP | 81.514 (18.486) | 95,776 (4,224) | 7.79 | Бикубик | 240 | N/a |
| TF_EFFITMETNTERITE4 *TFP | 81.502 (18.498) | 95,676 (4,324) | 13.00 | билинеар | 380 | N/a |
| TF_EFFITMETNTE_B1_NS | 81.388 (18.612) | 95,738 (4,262) | 7.79 | Бикубик | 240 | 0,88 |
| TF_EFFITMETNT_EL | 80.534 (19.466) | 95.190 (4,810) | 10.59 | Бикубик | 300 | 0,904 |
| TF_EFFITMETNTE_EL *TFP | 80.476 (19.524) | 95,200 (4,800) | 10.59 | Бикубик | 300 | N/a |
| TF_EFFITMETNTE_B2_AP *TFP | 80.420 (19.580) | 95.040 (4,960) | 9.11 | Бикубик | 260 | N/a |
| TF_EFFITMETNTE_B2_AP | 80.306 (19.694) | 95,028 (4,972) | 9.11 | Бикубик | 260 | 0,890 |
| TF_EFFITMETNTENT_B2 *TFP | 80.188 (19.812) | 94,974 (5,026) | 9.11 | Бикубик | 260 | N/a |
| TF_EFFITMETNTE_B2 | 80.086 (19.914) | 94,908 (5,092) | 9.11 | Бикубик | 260 | 0,890 |
| TF_EFFITMETNTE_LITE3 | 79,812 (20,188) | 94,914 (5,086) | 8.20 | билинеар | 300 | 0,904 |
| TF_EFFITMETNTENT_LITE3 *TFP | 79,734 (20,266) | 94,838 (5,162) | 8.20 | билинеар | 300 | N/a |
| TF_EFFITMETNTE_B1_AP *TFP | 79,532 (20,468) | 94,378 (5,622) | 7.79 | Бикубик | 240 | N/a |
| TF_EFFITMETNTE_CC_B1_8E *TFP | 79,464 (20,536) | 94,492 (5,508) | 39,7 | Бикубик | 240 | 0,88 |
| TF_EFFITMETNTER_CC_B1_8E | 79,298 (20,702) | 94,364 (5,636) | 39,7 | Бикубик | 240 | 0,88 |
| TF_EFFITMETNTE_B1_AP | 79,278 (20,722) | 94,308 (5,692) | 7.79 | Бикубик | 240 | 0,88 |
| TF_EFFITMETNTE_B1 *TFP | 79,172 (20,828) | 94,450 (5,550) | 7.79 | Бикубик | 240 | N/a |
| TF_EFFITMETNTE_EM *TFP | 78.958 (21.042) | 94,458 (5,542) | 6,90 | Бикубик | 240 | N/a |
| TF_EFFITMETNTE_B0_NS *TFP | 78.806 (21.194) | 94,496 (5,504) | 5.29 | Бикубик | 224 | N/a |
| tf_mixnet_l *tfp | 78.846 (21.154) | 94,212 (5,788) | 7.33 | билинеар | 224 | N/a |
| TF_EFFITMETNTE_B1 | 78.826 (21.174) | 94.198 (5,802) | 7.79 | Бикубик | 240 | 0,88 |
| tf_mixnet_l | 78,770 (21,230) | 94,004 (5,996) | 7.33 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNET_EM | 78.742 (21.258) | 94,332 (5,668) | 6,90 | Бикубик | 240 | 0,875 |
| TF_EFFITMETNTE_B0_NS | 78.658 (21,342) | 94,376 (5,624) | 5.29 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTE_CC_B0_8E *TFP | 78.314 (21.686) | 93,790 (6,210) | 24.0 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTE_CC_B0_8E | 77.908 (22.092) | 93,656 (6,344) | 24.0 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTE_CC_B0_4E *TFP | 77.746 (22.254) | 93,552 (6,448) | 13.3 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTE_CC_B0_4E | 77.304 (22.696) | 93,332 (6,668) | 13.3 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTE_ES *TFP | 77.616 (22,384) | 93,750 (6,250) | 5.44 | Бикубик | 224 | N/a |
| TF_EFFITMETNTENT_LITE2 *TFP | 77.544 (22,456) | 93,800 (6,200) | 6.09 | билинеар | 260 | N/a |
| TF_EFFITMETNTE_LITE2 | 77.460 (22,540) | 93,746 (6,254) | 6.09 | Бикубик | 260 | 0,89 |
| TF_EFFITMETNTE_B0_AP *TFP | 77,514 (22,486) | 93,576 (6,424) | 5.29 | Бикубик | 224 | N/a |
| TF_EFFITMETNT_ES | 77.264 (22,736) | 93,600 (6,400) | 5.44 | Бикубик | 224 | N/a |
| TF_EFFITMETNTENT_B0 *TFP | 77.258 (22,742) | 93,478 (6,522) | 5.29 | Бикубик | 224 | N/a |
| TF_EFFITMETNTE_B0_AP | 77.084 (22,916) | 93,254 (6,746) | 5.29 | Бикубик | 224 | 0,875 |
| tf_mixnet_m *tfp | 77.072 (22,928) | 93,368 (6,632) | 5.01 | билинеар | 224 | N/a |
| tf_mixnet_m | 76,950 (23,050) | 93.156 (6,844) | 5.01 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTE_B0 | 76.848 (23.152) | 93,228 (6,772) | 5.29 | Бикубик | 224 | 0,875 |
| TF_EFFITMETNTENT_LITE1 *TFP | 76.764 (23.236) | 93,326 (6,674) | 5.42 | билинеар | 240 | N/a |
| TF_EFFITMETNTE_LITE1 | 76.638 (23,362) | 93,232 (6,768) | 5.42 | Бикубик | 240 | 0,882 |
| tf_mixnet_s *tfp | 75,800 (24,200) | 92,788 (7,212) | 4.13 | билинеар | 224 | N/a |
| tf_mobilenetv3_large_100 *tfp | 75,768 (24,232) | 92,710 (7,290) | 5.48 | билинеар | 224 | N/a |
| tf_mixnet_s | 75,648 (24,352) | 92.636 (7,364) | 4.13 | Бикубик | 224 | 0,875 |
| tf_mobilenetv3_large_100 | 75,516 (24,484) | 92,600 (7,400) | 5.48 | билинеар | 224 | 0,875 |
| TF_EFFITMETNTENT_LITE0 *TFP | 75,074 (24,926) | 92.314 (7,686) | 4.65 | билинеар | 224 | N/a |
| TF_EFFITMETNTE_LITE0 | 74,842 (25,158) | 92.170 (7,830) | 4.65 | Бикубик | 224 | 0,875 |
| tf_mobilenetv3_large_075 *tfp | 73,730 (26,270) | 91.616 (8.384) | 3.99 | билинеар | 224 | N/a |
| tf_mobilenetv3_large_075 | 73,442 (26,558) | 91,352 (8,648) | 3.99 | билинеар | 224 | 0,875 |
| tf_mobilenetv3_large_minimal_100 *tfp | 72,678 (27,322) | 90.860 (9.140) | 3.92 | билинеар | 224 | N/a |
| tf_mobilenetv3_large_minimal_100 | 72,244 (27,756) | 90.636 (9.364) | 3.92 | билинеар | 224 | 0,875 |
| tf_mobilenetv3_small_100 *tfp | 67,918 (32,082) | 87.958 (12.042 | 2.54 | билинеар | 224 | N/a |
| tf_mobilenetv3_small_100 | 67,918 (32,082) | 87.662 (12.338) | 2.54 | билинеар | 224 | 0,875 |
| tf_mobilenetv3_small_075 *tfp | 66.142 (33,858) | 86.498 (13.502) | 2.04 | билинеар | 224 | N/a |
| tf_mobilenetv3_small_075 | 65,718 (34,282) | 86.136 (13.864) | 2.04 | билинеар | 224 | 0,875 |
| tf_mobilenetv3_small_minimal_100 *tfp | 63,378 (36,622) | 84,802 (15.198) | 2.04 | билинеар | 224 | N/a |
| tf_mobilenetv3_small_minimal_100 | 62,898 (37,102) | 84,230 (15,770) | 2.04 | билинеар | 224 | 0,875 |
*Модели TFP, подтвержденные с помощью tf-preprocessing трубопровода
Google TF и Tflite Wewsats, переносимые из официальных репозитории Tensorflow
Вся разработка и тестирование были проведены в средах Conda Python 3 в системах Linux x86-64, в частности Python 3.6.x, 3.7.x, 3.8.x.
Пользователи сообщили, что установка Anaconda Python 3 в Windows Works. Я сам не проверил это.
Версии Pytorch 1.4, 1,5, 1,6 были протестированы с помощью этого кода.
Я старался сохранить минимальные зависимости, настройка соответствует инструкциям по установке Pytorch по умолчанию для Conda:
conda create -n torch-env
conda activate torch-env
conda install -c pytorch pytorch torchvision cudatoolkit=10.2
Модели можно получить через API Pytorch Hub API
>>> torch.hub.list('rwightman/gen-efficientnet-pytorch')
['efficientnet_b0', ...]
>>> model = torch.hub.load('rwightman/gen-efficientnet-pytorch', 'efficientnet_b0', pretrained=True)
>>> model.eval()
>>> output = model(torch.randn(1,3,224,224))
Этот пакет может быть установлен через PIP.
Установить (после Conda Env/Install):
pip install geffnet
Оценка использование:
>>> import geffnet
>>> m = geffnet.create_model('mobilenetv3_large_100', pretrained=True)
>>> m.eval()
Использование поезда:
>>> import geffnet
>>> # models can also be created by using the entrypoint directly
>>> m = geffnet.efficientnet_b2(pretrained=True, drop_rate=0.25, drop_connect_rate=0.2)
>>> m.train()
Создайте в NN.Sectembent Container, для Fast.ai и т. Д.
>>> import geffnet
>>> m = geffnet.mixnet_l(pretrained=True, drop_rate=0.25, drop_connect_rate=0.2, as_sequential=True)
Сценарии включены
onnx_export.py )onnx_optimize.py или onnx_validate.py w/ --onnx-output-opt arg)onnx_validate.py )onnx_to_caffe.py )caffe2_validate.py )caffe2_benchmark.py )В качестве примера, чтобы экспортировать модель Mobilenet-V3, предварительно предварительную, а затем запустить проверку ImageNet:
python onnx_export.py --model mobilenetv3_large_100 ./mobilenetv3_100.onnx
python onnx_validate.py /imagenet/validation/ --onnx-input ./mobilenetv3_100.onnx
Эти сценарии были протестированы для работы на Pytorch 1.6 и Onnx 1,7 Вт/ Onnx Runtime 1.4. Совместимый с Caffe2 экспорт теперь требует дополнительных ARG, упомянутых в сценарии экспорта (не требуется в более ранних версиях).
_EXPORTABLE Flag в config.py не установлен на TRUE. Используйте config.set_exportable(True) , как в сценарии onnx_export.py .